| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 614 人关注过本帖
标题:请教一个递归问题
取消只看楼主 加入收藏
lw8484654
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-12-1
收藏
 问题点数:0 回复次数:0 
请教一个递归问题

#include<stdio.h>
#include<stdlib.h>
#define N 9

int array[N][N]={9,0,5,8,0,4,0,2,0,
8,0,0,1,0,5,0,0,9,
1,0,0,0,0,0,5,0,3,
0,0,0,3,9,0,8,0,0,
2,0,8,0,0,0,7,0,1,
3,0,9,0,8,1,0,0,0,
5,0,4,0,0,0,0,1,0,
7,0,0,6,0,0,0,0,0,
0,8,0,5,0,3,9,0,0};
int temp[N][N];

void print()
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d ",array[i][j]);
printf("\n");
}
}

bool Test(int n,int m,int value)
{
bool b=true;
int i;
for(i=0;i<N;i++)
{
if(array[n][i]==value)b=false;
if(array[i][m]==value)b=false;
}
return b;
}

void swap(int row,int col)
{
int i,j,m;
if(row==N){print();system("PAUSE");}
i=row+(col+1)/N;
j=(col+1)%N;
if(array[row][col]!=0)swap(i,j);
for(m=1;m<=N;m++)
{
if(Test(row,col,m))
{
array[row][col]=m;
swap(i,j);
array[row][col]=0;
}
}
}

int main()
{
swap(0,0);
return 0;
}

这是一个求数独的问题!!!
为什么有的答案是重复的呢?如何在递归里避免重复的呢?

搜索更多相关主题的帖子: 递归 
2007-03-30 20:26
快速回复:请教一个递归问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034636 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved