您的位置:首页 > 其它

Problem E: 用数字造数字(II)

2016-01-20 22:27 225 查看
You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted. 

你不能改变你的过去,但你可以让你的未来变得更美好。一旦时间浪费了,生命就浪费了。


Description

输入一个3位以上的整数,求其中最大的两个数字之和与最小的数字之和之间的差。例如:输入8729,输出8,即(9+8)-(2+7)=8,再如,输入24825,输出9,即(8+5)-(2+2)=9。


Input

一个3位以上的整数


Output

最大的两个数字之和与最小的数字之和之间的差


Sample Input

8729


Sample Output

8


HINT

将分离好的数字存储在数组中,再从数组中找出最大、次大值,以及最小、次小值。最坏的策略,将得到的数组排序后取头尾两个元素。

源代码:

#include <stdio.h>
int main()
{
int n,a[99],max1,min1,max2,min2,b=0;
scanf("%d",&n);
while(n>0)              //将多位数分离开放在数组里
{
a[b]=n%10;
n/=10;
b++;
}
if(a[0]>a[1])
{
max1=min2=a[0];
max2=min1=a[1];
}
else
{
max1=min2=a[1];
max2=min1=a[0];
}
for(int i=2;i<b;i++)//循环判断最大最小值
{                        //同时找出第二大第二小的数
if(max1<=a[i])
{
max2=max1;
max1=a[i];
}
else if(a[i]<max1&&a[i]>max2)
{
max2=a[i];
}
if(min1>=a[i])
{
min2=min1;
min1=a[i];
}
else if(a[i]>min1&&a[i]<min2)
{
min2=a[i];
}
}
printf("%d",(max1+max2)-(min1+min2));
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: