只记得挡下的强烈( ~不潮不花钱~) , 那个啥 言归正传 , 今晚真是 做的眼疼 , 只记得当下的强烈 , 扣扣扣扣 , 左左左左 偏左就用左手 . 好不容易做出来 结果被 卡死到 输出格式上了 ......
这个题是需要再做一下的
Hey greedy,don’t fret
What you see is what you get
You name it,I have it
请你不要到处扣扣
最早的时候 我一直用的都是 两个for循环 遍历 寻找 结果就是 不停错误 , ......................先付上修改之后的代码 , 一会在用原来的思想强行实现一波.
1 #include<stdio.h> 2 int a[9][9]; 3 int flag; 4 bool check(int y,int x,int mark) 5 { 6 for(int i=0;i<9;i++) 7 { 8 if(a[y][i]==mark) 9 return false; 10 if(a[i][x]==mark) 11 return false; 12 } 13 for(int i=(y/3)*3;i<(y/3)*3+3;i++) 14 for(int j=(x/3)*3;j<(x/3)*3+3;j++) 15 { 16 if(a[i][j]==mark) 17 return false; 18 } 19 return true; 20 } 21 int n; 22 void DFS() 23 { 24 if(n==81) 25 { 26 return; 27 } 28 for(int i=n,mark=0;i<=81;i++) 29 { 30 31 if(i==81) 32 { 33 n=81; 34 return; 35 } 36 int y=i/9,x=i%9; 37 if(a[y][x]==0) 38 { 39 for(int i=1;i<=9;i++) 40 { 41 if(check(y,x,i)) 42 { 43 a[y][x]=i; 44 i++; 45 DFS(); 46 i--; 47 if(n==81) 48 { 49 i=81; 50 break; 51 } 52 a[y][x]=0; 53 } 54 if(i==9) 55 { 56 mark=1; 57 } 58 } 59 if(mark) 60 break; 61 } 62 } 63 } 64 int main() 65 { 66 int t; 67 scanf("%d",&t); 68 while(t--) 69 { 70 for(int i=0;i<9;i++) 71 for(int j=0;j<9;j++) 72 scanf("%d",&a[i][j]); 73 n=0; 74 DFS(); 75 for(int i=0;i<9;i++) 76 { 77 for(int j=0;j<9;j++) 78 printf("%d ",a[i][j]); 79 printf("\n"); 80 } 81 } 82 return 0; 83 }
时间: 2024-10-13 11:21:24