即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

差值 NYOJ1233 思路+代码

编程语言 qq_36738482 14℃ 0评论
本文目录
[隐藏]

1. 差值

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
描述

1.1.     输入一个整数数组,将它们连接起来排成一个数,找出能排出的所有数字中最大,最小的两个,输出两个数的差值。例如输入数组{1,
 2}
,则输出9


输入
第一行输入一个整数T,表示有T组测试数据。每组测试数据的第一行输入一个整数n(0
输出
输出最大数最小数的差值,输出占一行。
样例输入
1
3
1 2 3
样例输出
198
上传者
ZWZ530


思路:

这个题目比较有意思,不是纯粹的模板题,夙瑶需要对输入进行数据处理。难点为排序算法,应该清楚不是数值大的排前面而是字典序最大的排前 ,这里可以用到strcmp()进行比较,排完序进行一个简单的大数减法操作就行了,不推荐用模板,因为这两个相减的数数位相同,大小关系已知,很简单的操作。最后注意处理前导零就行了。

编程最重要的还是细心。

#include
using namespace std;
char c[50001];
char s[50001];

int n;
struct zz
{
    char s[50];
}q[1050];
int cmp(zz a,zz b)//字典序进行排序
{
    return strcmp(strcat(a.s,b.s),strcat(b.s,a.s))<0;
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        memset(q,0,sizeof(q));
        memset(s,0,sizeof(s));
        memset(c,0,sizeof(c));
        scanf("%d",&n);
        for(int i=0;i=0;j--,i++)
        {
             strcat(c,q[i].s);//最小
             strcat(s,q[j].s);//最大

        }

        int l=strlen(c);
        for(int i=l-1;i>=0;i--)
        {
            if(s[i]-c[i]<0)
            {
                --s[i-1];
                s[i]+=10;
            }
           s[i]=s[i]-c[i]+'0';

        }

       int y=0;
       for(;y





转载请注明:CodingBlog » 差值 NYOJ1233 思路+代码

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情