原题链接:C语言训练-谁家孩子跑最慢*
问题描述: 就是三家的9个小孩子在一起跑步,没有跑的相同的排名的,跑第一名的得九分,第二名的得到 八分,以此类推,并且排名没有相邻着的,就是第一名是王家的,第二名是张家的话,第三名就 不能是张家的了,现在已知李家第一,王家第二,各个家族的总得分是相同的,问最后一名的小 孩子是哪个家族的........ 简单思路: 这个题我们可以边推理边想思路,首先 李家已经得了第一名(9分) 王家得了第二名(8分) 很明显的是九个孩子一共有45分,而三个家族的得分是相同的,那么每个家族应该得到了15分, 李家已经得到了9分了,所以第三名(7分)一定不是李家的,而王家不可能连续的排名,所以 第三名一定是张家(7分)的 那么第四名(6分)一定不会是张家的了,所以张家的第二名的孩子只可能得到4分或者5分 而王家和李家的第二名都可能得到4分,5分,6分 故而我们可以建立一个二维数组: 0 1 2 张 7 4||5 王 8 4||5||6 李 9 4||5||6 所以就可以定义三个变量i.j.k分别代表的是张家第二名的分数,王家第二名的分数,李家第二名 的分数 而张家、王家、李家的第三名的得分我们可以用15减去他们前两名的得分,然后我们就可以得到 他们三家的第三名的得分了,但是他们三家的第二名的得分都不相同,第三名的得分也都是不相 同的,所以大致的思路就是如此了。 代码如下: public class Lab1153 { public static void main(String[] args) { int array[][]=new int[3][3]; array[0][0]=7; array[1][0]=8; array[2][0]=9; int i,j,k; for(i=4;i<6;i++) for(j=4;j<7;j++) for(k=4;k<7;k++) { if((i!=j&&i!=k&&j!=k)&&(15-7-i)!=(15-8-j)&&(15-7-i)!=(15-9-k)&&(15-8-j)!=(15-9-k)) { array[0][1]=i;array[0][2]=15-7-i; array[1][1]=j;array[1][2]=15-8-j; array[2][1]=k;array[2][2]=15-9-k; } } for(int m=0;m<array.length;m++) for(int n=0;n<array[m].length;n++) if(array[m][n]==1) { if(m==0) System.out.println("Z"); else if(m==1) System.out.println("W"); else System.out.println("L"); } } }
0.0分
5 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复