• 八皇后问题


    #include "stdio.h"  
    #include "time.h"  #define num 8 int a[num][num],count=0; FILE *fw; int judge() { int aa=0,bb=0; int i,j,num1=0; ////////////////横排不用判断 for (i=0;i<num;i++)//判断竖排 { for (j=0;j<num;j++) { if (a[j][i]==1) num1++; } if(num1>1) return 0; else num1=0; } num1=0; for (i=0;i<num;i++)//第一排向下 { num1=0; aa=0; bb=i; while(bb>=0)//斜向左下 { if(a[aa][bb]==1) num1++; if(num1>1) return 0; aa++; bb--; } aa=0; bb=i; num1=0; while(bb<num)//斜向右下 { if(a[aa][bb]==1) num1++; if(num1>1) return 0; aa++; bb++; } } /////// num1=0; for(i=0;i<num;i++)//最后一排向上 { num1=0; aa=num-1; bb=i; while(bb<num)//斜向右上 { if(a[aa][bb]==1) num1++; if(num1>1) return 0; aa--; bb++; } aa=num-1; bb=i; num1=0; while(bb>=0)//斜向左上 { if(a[aa][bb]==1) num1++; if(num1>1) return 0; aa--; bb--; } } return 1; } void init() { int i,j; for (i=0;i<num;i++) for (j=0;j<num;j++) a[i][j]=0; } void main() {
      

      clock_t start;
      clock_t end;
      start =time(NULL);

          fw = fopen("b.txt","a");//以追加方式写入   

        int i,j,c[num];  
        init();  
        for (c[0]=0;c[0]<num;c[0]++)  
            for (c[1]=0;c[1]<num;c[1]++)  
                for (c[2]=0;c[2]<num;c[2]++)  
                    for (c[3]=0;c[3]<num;c[3]++)  
                        for (c[4]=0;c[4]<num;c[4]++)  
                            for (c[5]=0;c[5]<num;c[5]++)  
                                for (c[6]=0;c[6]<num;c[6]++)  
                                    for (c[7]=0;c[7]<num;c[7]++)  
                                    {  
                                        a[0][c[0]]=1;  
                                        a[1][c[1]]=1;  
                                        a[2][c[2]]=1;  
                                        a[3][c[3]]=1;  
                                        a[4][c[4]]=1;  
                                        a[5][c[5]]=1;  
                                        a[6][c[6]]=1;  
                                        a[7][c[7]]=1;  
                                        if(judge()==1)  
                                        {  
                                            count++;  
                                            fprintf(fw,"第%d种
    ",count);  
                                            printf("第%d种
    ",count);  
                                            for(i=0;i<num;i++)  
                                            {         
                                                for (j=0;j<num;j++)  
                                                {  
                                                    fprintf(fw,"%d ",a[i][j]);  
                                                    printf("%d ",a[i][j]);  
                                                }  
                                                fprintf(fw,"
    ");  
                                                printf("
    ");  
                                            }  
                                            fprintf(fw,"
    ");  
                                            printf("
    ");  
                                        }  
                                        init();  
                                    }  
        printf("%d
    ",count);  
        fprintf(fw,"一共%d种
    ",count); 

    end = time(NULL);
    printf(" 程序运行所用时间%d秒 ",end-start);

     
    } 
     
    //本文出自 “阿凡达” 博客,转载请与作者联系!
  • 相关阅读:
    excel 读取
    MSDN异步编程概述 [C#] zzhttp://www.cnblogs.com/hxhbluestar/articles/60023.html
    window.opener showModelessDialog showModalDialog 获取|控制父窗体的区别
    MySql中文乱码解决方法
    关于随机数
    javascript 日期处理(注意事项)
    一个简单访问office程序的控件,不依赖officedll
    关于12306的bug
    回车提交
    js动态添加外部js(顶)
  • 原文地址:https://www.cnblogs.com/umgsai/p/3908229.html
Copyright © 2020-2023  润新知