摘要: 如下图,按箭头方向输出改矩阵的元素:观察可知,若输出元素为M[i][j]时,i+j = k,k值从0到row+col-2逐渐变化,当k为奇数时,输出M[i][k-i];当k为偶数时,输出M[k-i][i]。 1 void outputMatrix(const char *M, const int row, const int col) 2 { 3 int n = row + col - 2; 4 for(int k=0; k<=n; k++) 5 for(int i=0; i<=k; i++) 6 { 7 ... 阅读全文
posted @ 2014-04-06 21:36 XpowerLord 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 问题:战场上不同的位置有N个战士(n>4),每个战士知道当前的一些战况,现在需要这n个战士通过通话交流,互相传达自己知道的战况信息,每次通话,可以让通话的双方知道对方的所有情报,设计算法,使用最少的通话次数,使得战场上的n个士兵知道所有的战况信息,不需要写程序代码,得出最少的通话次数。解答:若要使通话次数尽可能地少,那么通话双方所了解的信息要尽可能地互补,即能组成全部的信息。因此考虑分治法,最小单位为2,因为2个人之间最少需要一次通信。设N个人通信最少需要K次通信,考虑N=5和N=6时:如上图,线上的数字表示通信的序号,在通信时,尽可能地满足信息互补,如左图中4、5两次通信,右图中5、6 阅读全文
posted @ 2014-04-06 20:04 XpowerLord 阅读(393) 评论(0) 推荐(0) 编辑