[[members]]
 
 僕のweb:[[http://www.z95.jp:http://www.z95.jp]]
 
 N王妃問題の組み合わせを数え上げるプログラムを作りました。
 *試作品1号
 冒頭の「#define N 12」で1辺の長さを指定しています。
     #include <stdio.h>
     #define N 12
     int main(){
         signed int v0[N],v1[N]={0},v2,v3,v4,v5[N],v6=0;
         while(1){
             for(v2=0;v2<N;v2++){
                 v0[v2]=v2;
             }
             for(v2=0;v2<N;v2++){
                 for(v3=v4=0;;){
                     if(v0[v4]!=N){
                         if(v3==v1[v2]){
                             break;
                         }
                         v3++;
                     }
                     v4++;
                 }
                 v5[v2]=v0[v4];
                 v0[v4]=N;
             }
         
             for(v2=0;v2<N;v2++){
                 for(v3=0;v3<v2;v3++){
                     if(v5[v2]+v2==v5[v3]+v3||v5[v2]-v2==v5[v3]-v3){
                         goto l0;
                     }
                 }
             }
             l0:
             if(v2==N){
                 v6++;
                 v1[N-1]++;
                 for(v2=1;v2<=N;v2++){
                     if(v1[N-v2]==v2){
                         v1[N-v2]=0;
                         if(v2==N){
                             goto l1;
                         }else{
                             v1[N-v2-1]++;
                         }
                     }
                 }
             }else{
                 v1[v2]++;
                 for(v2++;v2<N;v2++){
                     v1[v2]=0;
                 }
                 for(v2=1;v2<=N;v2++){
                     if(v1[N-v2]==v2){
                         v1[N-v2]=0;
                         if(v2==N){
                             goto l1;
                         }else{
                             v1[N-v2-1]++;
                         }
                     }
                 }
             }
         }
         l1:
         printf("%d",v6);
         return 0;
     }
 
 
 
 #comment

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS