問題
A,B二子被限制在己方3 X 3的格子里運動,A,B分別可以橫向或縱向移動项乒,但不能沿對角線移動且A,B不能處于同一縱向直線上啰劲。請寫出一個程序,輸出A檀何、B所有的合法位置蝇裤,要求在代碼中只能使用一個字節(jié)存儲變量廷支。
不考慮題目只能使用一個字節(jié)存儲的限制
#include<stdio.h>
int main(void)
{
int i,j;
for (i = 1; i <= 9; i++)
for(j = 1; j <= 9; j++)
{
if((i % 3 == 0) && (j % 3 != 0))
printf("A = %d, B = %d\n",i,j);
else if ((i % 3 == 1)&&(j % 3 != 1))
printf("A = %d, B = %d\n",i,j);
else if ((i % 3 == 2) && (j %3 != 2))
printf("A = %d, B = %d\n",i,j);
}
return 0;
}
這種方法最為笨拙,效率也不會高
縮短一些
使用字節(jié)類型變量
int main(void)
{
BYTE i = 81;
while(i--)
{
if (i / 9 % 3 == i %9 %3)
continue;
printf("A = %d, B = %d\n",i / 9 + 1, i % 9 + 1);
}
return 0;
}
最高效方法
#include<stdio.h>
struct {
unsigned char a:4;
unsigned char b:4;
} item;
int main(void)
{
for (item.a = 1; item.a <=9; item.a++)
for (item.b = 1; item.b <= 9; item.b++)
if(item.a % 3 != item .b % 3)
printf("A = %d, B = %d\n",item.a,item.b);
return 0;
}