美文网首页
国际象棋棋盘问题与织布理论

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

作者: b6aed1af4328 | 来源:发表于2016-09-23 21:51 被阅读19次

    这可以说是织布理论的一个比较好的论证编程作品。

    #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;
    }
    

    相关文章

      网友评论

          本文标题:国际象棋棋盘问题与织布理论

          本文链接:https://www.haomeiwen.com/subject/fqxxyttx.html