标题:请教一个递归问题
取消只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-128192-1-1.html




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

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