国际象棋棋盘问题与织布理论

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;
}
上一篇下一篇

猜你喜欢

热点阅读