方格填数

    xiaoxiao2021-03-25  83

    /* 方格填数 如下的10个格子    +--+--+--+    |  |  |  | +--+--+--+--+ |  |  |  |  | +--+--+--+--+ |  |  |  | +--+--+--+ (如果显示有问题,也可以参看【图1.jpg】) 填入0~9的数字。要求:连续的两个数字不能相邻。 (左右、上下、对角都算相邻) 一共有多少种可能的填数方案? 请填写表示方案数目的整数。 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。*/ //方法,暴力或者dfs,最后check方法输出 //答案 1580 #include<stdio.h> #include<math.h> int visit[11]={0}; int a[11]; int count=0; void show(){  for(int j=0;j<=9;j++)   {printf("%d",a[j]);     }   printf("\n"); } void check() {    //23  if(abs(a[0]-a[4])!= 1.0 && abs(a[0]-a[1]) != 1.0 && abs(a[0]-a[3]) != 1.0 && abs(a[0]-a[5]) != 1.0    && abs(a[1]-a[5]) != 1.0 && abs(a[1]-a[2]) != 1.0 && abs(a[1]-a[4]) != 1.0 && abs(a[1]-a[6]) != 1.0     && abs(a[2]-a[6]) != 1.0 && abs(a[2]-a[5]) != 1.0      && abs(a[3]-a[7]) != 1.0 && abs(a[3]-a[4]) != 1.0 && abs(a[3]-a[8]) != 1.0       && abs(a[4]-a[8]) != 1.0 && abs(a[4]-a[9]) != 1.0 && abs(a[4]-a[7]) != 1.0        && abs(a[5]-a[9]) != 1.0 && abs(a[5]-a[6]) != 1.0 && abs(a[5]-a[8]) != 1.0         && abs(a[6]-a[9]) != 1.0&& abs(a[4]-a[5]) != 1.0&& abs(a[8]-a[9]) != 1.0&& abs(a[7]-a[8]) != 1.0)         {          count++;        printf("解法有:%d\n",count);      }    return ;    }   void dfs(int n)  {   if(n==10)   {   //show();  check();   return;   }   for(int i=0;i<=9;i++)   {    if(visit[i]==0)      {       visit[i]=1;       a[n]=i;       dfs(n+1);       visit[i]=0;      }   }   }  main()  {   dfs(0);   return 0;   }
    转载请注明原文地址: https://ju.6miu.com/read-22950.html

    最新回复(0)