国际象棋棋盘问题与织布理论
2016-09-23 本文已影响19人
b6aed1af4328
这可以说是织布理论的一个比较好的论证编程作品。
#include<stdio.h>
#include<stdlib.h>//
int main()
{
//for (int i = 1; i <= 8; i++)
/* {
for (int j = 1; j <= 8; j++)
if ((i + j) % 2 == 0)
{
printf(" ");
}
else
{
printf("*");
}
printf("\n");
}*/
for (int c = 1; c <= 1000; c++)
{
int num;
printf("请输入尺寸值");
scanf_s("%d", &num);
int num3[100], num4[100];
int num5 = 0, num6 = 0;
for (int i = 1; i <= num * 8; i = i + 1)
{
for (int j = 0; j <= 7; j = j + 2)
{
if (i >= (1 + num*j) && i <= (num + num*j))
{
num3[num5] = i;
num5 += 1;
//printf("%d\n", num5);
}
}
for (int m = 1; m <= 7; m = m + 2)
{
if (i >= (1 + num*m) && i <= (num + num*m))
{
num4[num6] = i;
num6 += 1;
// printf("%d\n", num6);
}
}
}
/* for (int i = 0; i <= num5; i++)
{
printf("%d", num3[i]);
}
for (int i = 0; i <= num5; i++)
{
printf("%d", num4[i]);
}*/
int num1[8] = { 1,2,5,6,9,10,13,14 };
int num2[8] = { 3,4,7,8,11,12,15,16 };
for (int i = 1; i <= num * 8; i++)
{
for (int j = 1; j <= num * 8; j++)
{
for (int a = 0; a < num5; a++)
{
for (int b = 0; b < num6; b++)
{
if (i == num3[a] && j == num4[b])
{
printf("*");
}
else if (i == num4[b] && j == num3[a])
{
printf("*");
}
// /* else
// {
// printf(" ");
// }*/ //确实不能一else了之,前后嵌套了4个for循环,忘记织布理论了?\n才是换行,也就是说,这for循环在一行里不停的打空格...
else if (i == num3[a] && j == num3[b])
{
printf(" ");
}
else if (i == num4[a] && j == num4[b])
{
printf(" ");
}
}
}
}
printf("\n");
}
}
system("pause");
return 0;
}