当前位置:编程学习 > C/C++ >>

c语言填数问题,高手进!!

从整数1至10中任取9个不同的数,填入下图的9个格子中,使所有左、右相邻和上、下相邻的两个格子中的数之和是素数。试编写程序,求出所有的解
追问:就是正方形横竖各切2条线的图啊!

答案:#include<stdio.h>

int p[20] = {0, 0, 0, 1, 0,
                 1, 0, 1, 0, 0,
                 0, 1, 0, 1, 0,
                 0, 0, 1, 0, 1};

int mask[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int n[3][3];

void print()
{
  int i, j;
  for (i = 0; i < 3; i ++)
  {
    for (j = 0; j < 3; j ++)
      printf("%3d", n[i][j]);
    printf("\n");
  }
  printf("=========\n");
}

int check(int level)
{
  int x, y, r;
  x = level / 3;
  y = level % 3;
  r = 1;
  if (x - 1 >= 0)
    if (p[n[x][y] + n[x-1][y]] == 0)
      r = 0;
  if (y-1 >= 0)
    if (p[n[x][y] + n[x][y-1]] == 0)
      r = 0;
  return (r);
}

int fill(int level)
{
  int i;
  if (level == 9)
    print();
  else
    for (i = 1; i <= 10; i ++)
      if (mask[i] == 0)
      {
        mask[i] = 1;
        n[level/3][level%3] = i;
        if (check(level)==1)
          fill(level+1);
        mask[i] = 0;
      }
}

main()
{
  fill(0);
  system("PAUSE");
}
测试正确,采纳哦

声明:输入9个数字(0-10)后,程序崩溃(程序0错误,0警告)---如图

 

现在有3中可能: 1,系统问题
                            2,程序问题
                            3,题目无解

 

PS: 

      所以本想切换为XP测试,但是今晚引导出了点问题(导致启动后XP蓝屏),明天早上有重要课,不熬夜了,所以明天再帮你测试下,如果是系统问题就OK,其他2/3两点,明天会帮你鉴定。总之,明天帮你搞定一切。

       [所以现在想声明下:   你的提问----我接管了,呵呵]

 

 

 

初步代码,仅供参考:

 

 

#include <stdio.h>

int main()
{
 int array[9];
 
 printf("请输入9个数(0-10):");
 for(int i=0;i<9;i++)
 {
  {
   scanf("%d",array[i]);
   if(0<=array[i]&&10>=array[i])
   {
      for(int i=0;i<9;i++)
       if((array[i]+array[i+1])%i!=0&&(array[i]+array[i+3])%i!=0)
       {
        for( i=0;i<=9;i++)
        {
         if(i%3==0)
         printf("\n");
         printf("%d",array[i]);
        }
       }
   }
  }
 }
  
  return 0;
}

 

 

【酷_酷_币】为您服务....

 

[夜.梦晓]是我替你介绍来的哦

答案测试正确...

 

1 2 5
 4 3 8
 710 9
======
 1 2 5
 4 9 8
 710 3
======
 1 2 5
10 3 8
 7 4 9
======
 1 2 5
10 9 8
 7 4 3
======
 1 4 7
 2 310
 5 8 9
======
 1 4 7
 2 910
 5 8 3
======
 110 7
 2 3 4
 5 8 9
======
 110 7
 2 9 4
 5 8 3
======
 2 1 6
 3 4 7
 8 910
======
 2 1 6
 310 7
 8 9 4
======
 2 1 6
 9 4 7
 8 310
======
 2 1 6
 910 7
 8 3 4
======
 2 3 8
 1 4 9
 6 710
======
 2 3 8
 110 9
 6 7 4
======
 2 9 8
 1 4 3
 6 710
======
 2 9 8
 110 3
 6 7 4
======
 3 2 5
 4 1 6
 910 7
======
 3 2 5
10 1 6
 9 4 7
======
 3 4 7
 8 910
 5 2 1
======
 3 4 7
10 1 6
 9 2 5
======
 3 4 9
 2 110
 5 6 7
======
 3 4 9
10 1 2
 7 6 5
======
 3 8 5
 4 9 2
 710 1
======
 3 8 5
10 9 2
 7 4 1
======
 310 7
 4 1 6
 9 2 5
======
 310 7
 8 9 4
 5 2 1
======
 310 9
 2 1 4
 5 6 7
======
 310 9
 4 1 2
 7 6 5
======
 4 1 6
 3 2 5
10 9 8
======
 4 1 6
 9 2 5
10 3 8
======
 4 3 8
 710 9
 6 1 2
======
 4 3 8
 9 2 5
10 1 6
======
 4 310
 1 2 9
 6 5 8
======
 4 310
 9 2 1
 8 5 6
======
 4 7 6
 310 1
 8 9 2
======
 4 7 6
 910 1
 8 3 2
======
 4 9 8
 3 2 5
10 1 6
======
 4 9 8
 710 3
 6 1 2
======
 4 910
 1 2 3
 6 5 8
======
 4 910
 3 2 1
 8 5 6
======
 5 2 1
 8 3 4
 910 7
======
 5 2 1
 8 310
 9 4 7
======
 5 2 1
 8 9 4
 310 7
======
 5 2 1
 8 910
 3 4 7
======
 5 2 3
 6 1 4
 710 9
======
 5 2 3
 6 110
 7 4 9
======
 5 2 9
 6 1 4
 710 3
======
 5 2 9
 6 110
 7 4 3
======
 5 6 7
 2 1 4
 310 9
======
 5 6 7
 2 1 4
 910 3
======
 5 6 7
 2 110
 3 4 9
======
 5 6 7
 2 110
 9 4 3
======
 5 8 3
 2 9 4
 110 7
======
 5 8 3
 2 910
 1 4 7
======
 5 8 9
 2 3 4
 110 7
======
 5 8 9
 2 310
 1 4 7
======
 6 1 2
 7 4 3
10 9 8
======
 6 1 2
 7 4 9
10 3 8
======
 6 1 2
 710 3
 4 9 8
======
 6 1 2
 710 9
 4 3 8
======
 6 1 4
 5 2 3
 8 910
======
 6 1 4
 5 2 9
 8 310
======
 6 110
 5 2 3
 8 9 4
======
 6 110
 5 2 9
 8 3 4
======
 6 5 8
 1 2 3
 4 910
======
 6 5 8
 1 2 3
10 9 4
======
 6 5 8
 1 2 9
 4 310
======
 6 5 8
 1 2 9
10 3 4
======
 6 7 4
 110 3
 2 9 8
======
 6 7 4
 110 9
 2 3 8
======
 6 710
 1 4 3
 2 9 8
======
 6 710
 1 4 9
 2 3 8
======
 7 4 1
10 3

上一个:谁会C语言或C++语言 教教小弟 不胜感激…
下一个:关于数据结构(C语言)多项式计算

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,