【阅读管理源码】【phpcms手机端源码】【易语言代源码】c象棋源码_象棋源码下载

来源:egret源码编译

1.c国际象棋语言运行结果出问题
2.c/c++编程题 在国际象棋的棋源棋源棋盘上(N*N),皇后可以走直线也可以走斜线(对角线).一个皇后能吃

c象棋源码_象棋源码下载

c国际象棋语言运行结果出问题

       这个间隔是他编译显示的问题,如果你在vc里面编译就不会有这个间隔,码象码下阅读管理源码但是棋源棋源phpcms手机端源码vc里面编译也会有问题,那就是码象码下易语言代源码棋盘是错位的

       这里修改需要将

       printf(" "); /*输出两个空格*/改为

       printf("  "); /*输出3个空格*/

       效果如下

c/c++编程题 在国际象棋的棋盘上(N*N),皇后可以走直线也可以走斜线(对角线).一个皇后能吃

       #include <iostream>

       #include <cstdio>

       #define UINT unsigned int

       #define ULL unsigned long long

       #define MAXN ;

       using namespace std;

       int N,ans,minstep;

       UINT Row,Col;

       UINT Lft,Rgt;

       inline UINT lowbit(UINT x){

           return x&(-x);

       }

       bool check(){

           UINT tR=~Row,tC;

           UINT curR,curC;

           while(tR){

               curR=lowbit(tR);

               tR ^= curR;

               tC = ~Col;

               while(tC){

                   curC=lowbit(tC);

                   tC^=curC;

                   if((Rgt & (curR*curC))!=0 || (Lft & ((1<<(N-1))/curR*curC))!=0)

                       continue;

                   return false;

               }

           }

           return true;

       }

       void dfs(int row,int used,UINT col,UINT dig,UINT adg){

           if(used>minstep)

               return;

           if(row == N){

               if(check()){

                   if(used < minstep){

                       minstep = used;

                       ans=0;

                   }

                   ans++;

               }

               return;

           }

           UINT status=~(col|dig|adg);

           UINT binRow=(1<<row);

           while(status){

               UINT t=status&(-status);

               Col^=t;

               Row^=binRow;

               Lft^=((1<<(N-1))/binRow*t);

               Rgt^=(binRow*t);

               dfs(row+1,used+1,(t|col),(t|dig)>>1,(t|adg)<<1);

               Col^=t;

               Row^=binRow;

               Lft^=((1<<(N-1))/binRow*t);

               Rgt^=(binRow*t);

               status^=t;

           }

           dfs(row+1,used,col,dig>>1,adg<<1);

       }

       int main(){

           while(cin>>N){

               UINT col=(1<<N)-1;

               col=~col;

               ans=0;

               minstep=N+1;

               Row=Col=col;

               Rgt=Lft=0;

               dfs(0,0,col,0,0);

               cout<<minstep<<' '<<ans<<endl;

           }

           return 0;

       }

文章所属分类:百科频道,点击进入>>