您的位置:首页 > 编程语言

编程之美1.2 | 中国象棋将帅问题

2014-10-01 16:25 288 查看
后面两种写法很巧妙。一种利用位域,一种利用取余。

这里如果不用unsigned char来做位域的话,大小就为4. unsigned char才符合题目要求。

void chess1() {
struct {
unsigned char a:4;
unsigned char b:4;
} i;
cout << "sizeof(i): " << sizeof(i) << endl;
for (i.a = 1; i.a <= 9; i.a++) {
for (i.b = 1; i.b <= 9; i.b++) {
if (i.a % 3 == i.b % 3) continue;
cout << (int)i.a << " " << (int)i.b << endl;
}
}
}

void chess2() {
for (char n = 80; n >= 0; --n) {
if (n / 9 % 3 == n % 9 % 3) continue;
cout << n / 9 + 1 << " " << n % 9 + 1 << endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: