某公司笔试题

ancient 2006-06-19 01:22:53
笔试的时候这题没有做出来,请高手指点一下

一个N*N的对称矩阵,每行每列都是数字1~N的一种全排列。例如:
1 2 1 2 3
2 1 2 3 1
3 1 2
注意,3*3矩阵的一条对角线也是1、2、3的一个全排列,而2*2的矩阵则不是。请问,什么样的N,能使N*N的矩阵在满足题目条件的情况下必然有一条对角线是1~N的一个全排列。
A.3的幂
B.奇数
C.除了2以外的质数
D.N=3
E.以上全对
...全文
373 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
def000 2006-07-28
  • 打赏
  • 举报
回复
首先证明:在满足题目条件的奇数阵中,任一个元素必然出现在对角线上。
用反证法,假如元素a永远不出现在对角线上,既a的任一位置(i,j),有i!=j
考虑向一个空的矩阵添加元素a的过程:首先随意把a填到位置(i,j) i!=j,那莫,由于是对称阵,a必然也会出现在(j,i);因为每一行每一列的元素都不能重复,所以在以后的添加过程中,a不可能出现在第i,j行和第i,j列。
如果我们用两个数组表示a可能出现的行和列,在添加a到(i,j),(j,i)之前,
能够填写a的行:1,2,3,,,,n
能够填写a的列:1,2,3,,,,n
在添加a到(i,j)和(j,i)之后
能够填写a的行:1,2,3,,,,n(去掉i,j)
能够填写a的列:1,2,3,,,,n(去掉i,j)
也就是说,相当于一次从上述数组中划掉下标相同的两行和两列。
这样如果n是奇数,划到最后会发现只剩标号相同的一行一列了,就是说添加到最后,a只能出现在对角线上,这与假设矛盾。

所以如题所述的奇数阵的每个元素都必然出现在对角线上。由抽屉原理每个元素也只能出现一次。证毕。
ancient 2006-06-19
  • 打赏
  • 举报
回复
明白了
sharpdew 2006-06-19
  • 打赏
  • 举报
回复
对于任一正整数N,只要比较两个数列是否有重合的点就知道上述N*N矩阵的对脚线是否为一个1-N的组合:
2, 3, 4, ...,N
N,N-1,N-2,...,2
上面两个数列分别代表对角线上的数字的位置(列编号)和第一行第一个数在不同组合下循环换位的位置(列编号),如果要想对脚线上也是一个没有重复数的组合,一定要满足上面两个数列对应的位置的数不同,仔细分析上面两个数列可知,只要N不是偶数(也就是上面数列中数的个数位奇数,因为是从2开始的),那么上面两个数列对应的数就肯定不同。
ancient 2006-06-19
  • 打赏
  • 举报
回复
二楼的能解释一下吗?
zzwu 2006-06-19
  • 打赏
  • 举报
回复
真是一个极好的题目!
sharpdew 2006-06-19
  • 打赏
  • 举报
回复
奇数
LoveVV99 2006-06-19
  • 打赏
  • 举报
回复
mark,等待答案

33,026

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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