1.c国际象棋语言运行结果出问题
2.c/c++编程题 在国际象棋的棋源棋源棋盘上(N*N),皇后可以走直线也可以走斜线(对角线).一个皇后能吃
c国际象棋语言运行结果出问题
这个间隔是他编译显示的问题,如果你在vc里面编译就不会有这个间隔,码象码下cf刷点辅助源码但是棋源棋源源码里面替换logovc里面编译也会有问题,那就是码象码下分析类网站源码棋盘是错位的这里修改需要将
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;
}
2024-11-20 22:22284人浏览
2024-11-20 22:051024人浏览
2024-11-20 21:362396人浏览
2024-11-20 21:352304人浏览
2024-11-20 21:101889人浏览
2024-11-20 19:471173人浏览
1.知道源代码有什么好处?要源代码用了干什么?2.怎么在手机上查看APP的源码?3.如何查看exe的程序源代码?知道源代码有什么好处?要源代码用了干什么? 一、源代码的用途 源代码用于生成目标
1.reactadmin?2.vscodeå¦ä½å®è£ djangoï¼3.如何修复杜比全景声在Windows 11中不起作用4.如果百度提示网站有危险,继续浏览会有什么后果reactad
1.1å·åº 1å·åå代å·ççå2.“久零零数字商城”有这个吗?3.武汉电商直播系统源码4.刷好评赚钱靠谱吗?1å·åº 1å·åå代å·ç