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