gpt4 book ai didi

c++ - 将棋盘转换为位掩码

转载 作者:太空狗 更新时间:2023-10-29 23:51:21 30 4
gpt4 key购买 nike

我正在尝试将矩阵棋盘转换为 unsigned long long。如果那个 pos 中有硬币,我会更新相应的掩码。这是我的代码

    unsigned long long int mask = 0;
cout<<mask<<endl;
for(int i=0;i<8;++i)
for(int j=0;j<8;++j){
int pos = i*8+j;
cin>>board[i][j];
if(board[i][j] == 'P')
mask|=(1<<pos);
}
for(int i=0;i<8;++i)
{
for(int j=0;j<8;++j)
{
int pos = i*8+j;
if(mask&(1<<pos))
cout<<1;
else
cout<<0;

}
cout<<endl;
}

但是当我给出以下输入时

........
...P....
.....P..
...P....
........
........
P......P
.......P

输出如下

00000000
00010000
10000101
00010001
00000000
00010000
10000101
00010001

这显然是错误的。但我似乎没有发现任何错误。提前致谢。

最佳答案

您需要使用 unsigned long long位操作代码中的文字:

            mask|=(1ull<<pos);
^^^

        if(mask&(1ull<<pos))
^^^

如果您的编译器不支持 ull后缀,您可能必须显式转换 1unsigned long long .

附言如果您想知道您当前的代码最终是如何产生输出的,请观察输出由电路板的两半组成 ORed 在一起并打印两次。

关于c++ - 将棋盘转换为位掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21660721/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com