您的位置:首页 > 其它

YTU 2801: 用数字造数字(II)

2016-01-26 14:13 369 查看


2801: 用数字造数字(II)

时间限制: 1 Sec  内存限制: 128 MB
提交: 244  解决: 168


题目描述

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


输入

一个3位以上的整数


输出

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


样例输入

8729


样例输出

8


提示

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



你  离  开  了  ,  我  的  世  界  里  只  剩  下  雨  。  。  。

#include <stdio.h>
int main( )
{
int n,arr[15],m=0,i,ma1,ma2,mi1,mi2,t;
scanf("%d",&n);
while(n>0)
{
arr[m++]=n%10;
n/=10;
}
for(i=0; i<m-1; i++)
{
if(arr[i]>arr[i+1])
{
t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
for(i=0; i<m-2; i++)
{
if(arr[i]>arr[i+1])
{
t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
ma1=arr[m-1],ma2=arr[m-2];
for(i=0; i<m-1; i++)
{
if(arr[i]<arr[i+1])
{
t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
for(i=0; i<m-2; i++)
{
if(arr[i]<arr[i+1])
{
t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
mi1=arr[m-1],mi2=arr[m-2];
printf("%d",ma1+ma2-mi1-mi2);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: