�����������Դ��
代码如下:#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<<endl<<ans<<endl;
}
return 0;
}
题目:要求输出国际象棋棋盘。 1.程序分析:用i控制行,象棋象棋下载网站模板整套源码j来控制列,软件软件根据i+j的源码源码和的变化来控制输出黑方格,
前面的国际国际部分你应该能看懂吧,就是象棋象棋下载按行循环一共8行,每行循环8次,软件软件就是源码源码全部的格棋盘了,如果行跟列的国际国际各种底部指标源码和是个偶数,就显示ASCII表中的象棋象棋下载第个字符,如果不是软件软件则以空格代替,这样就能显示出交错的买源码自己运营棋盘。
ASCII表第个字符是"Û",也就是"U"上头有一个"^"符号。这是vue企业项目源码一个拉丁字母。方便拼读。但你看下我给你留的参考资料里面的推荐答案,实际上整体效果是国际象棋的棋盘~
补充一下:像这种专业背景的题目要有加分才会有人帮你回答的~
äºçº§Cè¯è¨
2024-11-20 16:23
2024-11-20 16:18
2024-11-20 15:50
2024-11-20 15:06
2024-11-20 14:56