1954: 奇怪的最大值
1.描述
三金这周上机课的时候考察了一下求三个数最大值这个问题,没想到有一大半人都不会,幸好在他的帮助下大家算是基本解决了这个问题,于是他想测试一下这帮人到底掌握的怎么样了。 他想在一组数中找一个数,这个数可以不是这组数中的最大的,但是要是相对比较大的,但是满足这个条件的数太多了,怎么办呢?他想到了一个比较损的办法,把这一组数从开始把每相邻三个数分成一组(组数是从1开始),奇数组的求最大值,偶数组的求最小值,然后找出这些值中的最大值。
输入
多组实例测试 每组测试数据首先一个N(N一定为3的倍数),表示总共有多少个数。
输出
输出这些值中的最大值
样例输入
3
1 3 5
6
1 2 3 5 7 9
样例输出
5
5
提示
多看看题!!!
2.代码
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,j,x;
while(~scanf("%d",&n))
{
int t=n/3,k=1,a[1001],max[1001]= {0},min[1001]= {0};
while(t--)
{
for(i=1; i<=3; i++)
{
scanf("%d",&a[i]);
if(i==1&&k%2!=0)
{
max[k]=a[1];
}
if(i==1&&k%2==0)
{
min[k]=a[1];
}
if(k%2!=0)
{
max[k]=a[i]>max[k]?a[i]:max[k];
}
else
{
min[k]=a[i]<min[k]?a[i]:min[k];
}
}
if(k==1)
{
x=max[k];
}
x=max[k]>x?max[k]:x;
x=min[k]>x?min[k]:x;
k++;
}
printf("%d\n",x);
}
return 0;
}
代码2
#include<stdio.h>
int main()
{
int n,m,i;
while(~scanf("%d",&n))
{
int a[n],b[n];
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
int j=1,max;
for(i=1;i<=n;i=i+3)
{
if(j%2!=0)
{
b[j]=a[i]>a[i+1]?a[i]:a[i+1];
b[j]=b[j]>a[i+2]?b[j]:a[i+2];
max=b[1];
if(b[j]>max)
max=b[j];
}
else
{
b[j]=a[i]<a[i+1]?a[i]:a[i+1];
b[j]=b[j]<a[i+2]?b[j]:a[i+2];
if(b[j]>max)
max=b[j];
}
j++;
}
printf("%d\n",max);
}
}