经典的程序员考试压轴题!!!!有兴趣的请进!!!

MZJCDD 2008-06-19 05:28:32
题目:在一个三行三列的方格框里面(有九个方格),编号如下:
0 1 2
3 4 5
6 7 8

N(N>9),从1到N中选择9个数字,填入到九个方格里面,要求任意两个方格的数之和是质数。
输出所有符合这种要求的数字序列!(提示:用试探法)
哪位大哥知道@帮帮忙@完整的代码有注释更好@
...全文
485 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
我看你有戏 2008-06-30
  • 打赏
  • 举报
回复
穷举法
yuanfeng_325 2008-06-30
  • 打赏
  • 举报
回复
不考虑对角线之和,最小一个解应该是
1 2 5
4 3 8
7 10 9
qizhi0119 2008-06-21
  • 打赏
  • 举报
回复
不太会,这块我也问过,但是,一直没弄明白.
tiaosa 2008-06-21
  • 打赏
  • 举报
回复
道行太淺,看的一頭霧水哦!
bellbird 2008-06-20
  • 打赏
  • 举报
回复
我觉得如果题目改成任意相邻的两个数之和为质数或许还能有解
lixun_21 2008-06-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 baihacker 的回复:]
首先不可能存在两个相同的数.
如果存在两个奇数,那么这两个奇数的和是偶数,也就是合数(2不考虑),所以奇数至多一个.
如果存在两个偶数,那么这两个奇数的和还是偶数,也就是合数(2不考虑),所以偶数至多一个.

对于2的情况另外考虑:
1 + 1 = 2;这种情况不可能
0 + 2 = 2;也就是其中确定了两个数:0和2
由上面的讨论,剩下七个数也是不可能有满足要求的情况的.
[/Quote]up
9527他大爷 2008-06-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 baihacker 的回复:]
首先不可能存在两个相同的数.
如果存在两个奇数,那么这两个奇数的和是偶数,也就是合数(2不考虑),所以奇数至多一个.
如果存在两个偶数,那么这两个奇数的和还是偶数,也就是合数(2不考虑),所以偶数至多一个.

对于2的情况另外考虑:
1 + 1 = 2;这种情况不可能
0 + 2 = 2;也就是其中确定了两个数:0和2
由上面的讨论,剩下七个数也是不可能有满足要求的情况的.
[/Quote]
bellbird 2008-06-20
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 gausszhch 的回复:]
引用 12 楼 bellbird 的回复:
呵呵,改一下题目,改成m x n的矩阵型方格

从1到N中选择m*n个数字,填入到九个方格里面,要求任意两个方格的数之和是质数。
求最小的满足要求的N,并输出N最小时候所有的解

用染色法可以发觉解是有可能存在的


不可能有解啊。
这个问题不管怎么改,如果“要求任意两个方格的数之和是质数”这句话不改,并且只要默认选择的数是不同的(避免全填1等情形),而且方格总数大于2,那么…
[/Quote]
呵呵,敲错了,我已另开了帖单独讨论修改后的问题,不过ms人气不旺
aozhi 2008-06-20
  • 打赏
  • 举报
回复
这是NEC的考题吧?哈哈,考过。

当时的原题N是一个>9的常数,是多少已经记不清了。
要求任意相邻的两数和是质数,这点lz肯定记错了。
Soulic 2008-06-20
  • 打赏
  • 举报
回复
这是什么考试哦,这么难
frank_323 2008-06-20
  • 打赏
  • 举报
回复
全填1 ,这啥题目啊
gausszhch 2008-06-20
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 bellbird 的回复:]
呵呵,改一下题目,改成m x n的矩阵型方格

从1到N中选择m*n个数字,填入到九个方格里面,要求任意两个方格的数之和是质数。
求最小的满足要求的N,并输出N最小时候所有的解

用染色法可以发觉解是有可能存在的
[/Quote]

不可能有解啊。
这个问题不管怎么改,如果“要求任意两个方格的数之和是质数”这句话不改,并且只要默认选择的数是不同的(避免全填1等情形),而且方格总数大于2,那么这个问题就应该没解。
因为方格总数大于2,所以至少有两个方格同是奇数或者同是偶数,而且不能同时为1,所以这两个数之和为大于2的偶数,不能为质数。

题目应该是要求 “任意两个相邻的方格的数之和是质数”,这样才有解(而且N大于11才有解)
bellbird 2008-06-20
  • 打赏
  • 举报
回复
呵呵,改一下题目,改成m x n的矩阵型方格

从1到N中选择m*n个数字,填入到九个方格里面,要求任意两个方格的数之和是质数。
求最小的满足要求的N,并输出N最小时候所有的解

用染色法可以发觉解是有可能存在的
xkyx_cn 2008-06-19
  • 打赏
  • 举报
回复
这个破程序lz拿去试试


#include <stdio.h>
#include <malloc.h>
#include <memory.h>

int
is_prime(int n)
{
int nret = 1;
int i, j;

if (n < 2)
return 0;

j = n / 2;
for (i = 2; i <= j; ++i)
{
if (n % i == 0)
return 0;
}

return nret;
}

int
match(int *ar, int n)
{
int nret = 1;
int i, j;

for (i = 0; i < n - 1; ++i)
{
for (j = i + 1; j < n; ++j)
{
if (0 == is_prime(ar[i] + ar[j]))
return 0;
}
}

return nret;
}

int
main(void)
{
int i, j, k, n;
int nResult = 0;
int nCur = 0;
int *aResult = NULL;

while(printf("please input n:"), scanf("%d", &n))
{
if (n < 10)
continue;

aResult = (int *)malloc(9 * sizeof(int));

k = 0;
while (k++ < n - 9)
{
i = k - 1;

memset(aResult, 0, 9 * sizeof(int));
nCur = 0;
while (i <= n)
{
aResult[nCur] = ++i;

if (nCur > 1 && 0 == match(aResult, nCur))
aResult[nCur] = ++i;
else
if (++nCur == 8)
{
++nResult;
break;
}
}

if (nCur == 8)
{
printf("Result No.%2d\n", nResult);
for (j = 0; j < 9; ++j)
{
printf("%4d", aResult[j]);

if (j % 3 == 2)
printf("\n");
}
}
}

printf("Results count:%4d\n", nResult);
if (0 == nResult)
printf("No result matched.\n");

free(aResult);
}

return 0;
}
xkyx_cn 2008-06-19
  • 打赏
  • 举报
回复
lz请把题目原封不动的拿过来,我测试了一下,没有答案
leelittlelong 2008-06-19
  • 打赏
  • 举报
回复
题目真的有问题。。。
MZJCDD 2008-06-19
  • 打赏
  • 举报
回复
这是一道程序员考试题目哦!!!!!
怎么不可能呢?
性能侠客行 2008-06-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 baihacker 的回复:]
首先不可能存在两个相同的数.
如果存在两个奇数,那么这两个奇数的和是偶数,也就是合数(2不考虑),所以奇数至多一个.
如果存在两个偶数,那么这两个奇数的和还是偶数,也就是合数(2不考虑),所以偶数至多一个.

对于2的情况另外考虑:
1 + 1 = 2;这种情况不可能
0 + 2 = 2;也就是其中确定了两个数:0和2
由上面的讨论,剩下七个数也是不可能有满足要求的情况的.
[/Quote]
分析得很的对,good。。。飞雪!
fallening 2008-06-19
  • 打赏
  • 举报
回复
不太可能
回复内容太短了!
baihacker 2008-06-19
  • 打赏
  • 举报
回复
首先不可能存在两个相同的数.
如果存在两个奇数,那么这两个奇数的和是偶数,也就是合数(2不考虑),所以奇数至多一个.
如果存在两个偶数,那么这两个奇数的和还是偶数,也就是合数(2不考虑),所以偶数至多一个.

对于2的情况另外考虑:
1 + 1 = 2;这种情况不可能
0 + 2 = 2;也就是其中确定了两个数:0和2
由上面的讨论,剩下七个数也是不可能有满足要求的情况的.
加载更多回复(3)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧