- 43 名前:デフォルトの名無しさん mailto:sage [2006/04/09(日) 23:47:28 ]
- #include <stdio.h>
int a[81];s(n){int i=80,c[10];if(a[n])s(n+1);else if(n>80)for(;~i;i--)printf("\ %d%c",a[i],i%9?0:10);else{for(i=9;i;)c[i--]=0;for(i=8;i--;)c[a[n/9*9+i]]=c[a[n% 9+i*9]]=c[a[n/27*27+n%9/3*3+i%3+i/3*9]]=1;for(i=1;i<=9;i++)c[i]||(a[n]=i,s(n+1) ,a[n]=0);}}main(i){i=80;for(;~i;)scanf("%d",&a[i--]);s(0);} 数独を解くプログラムのつもり。あと2行あるからなんかしたいけど何をしようか思いつかん。 標準入力として↓みたいなファイルを食わせると答えを出す。 0 0 6 0 0 0 0 0 1 0 7 0 0 6 0 0 5 0 8 0 0 1 0 3 2 0 0 0 0 5 0 4 0 8 0 0 0 4 0 7 0 2 0 9 0 0 0 8 0 1 0 7 0 0 0 0 1 2 0 5 0 0 3 0 6 0 0 7 0 0 8 0 2 0 0 0 0 0 4 0 0 ぶっちゃけ七行やったこと殆どないんで無駄が多そう。 ちなみにあほ再帰なんで表出が減るとあほみたいに遅くなります。 将来は数々の人々みたいに立派な七行erになりたい。
|

|