原题链接: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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复