问题标题: 酷町堂:4244 最大数字

0
0
已解决
汪恺恒
汪恺恒
中级启示者
中级启示者

题目描述 Description

现在给出一个正整数num,试在交换num中某两位数字一次的情况下,求出能得到的最大数字;如果不需要交换,则输出原数字。

输入描述 Input Description

一个正整数,num

输出描述 Output Description

交换一次后能得到的最大正整数

样例输入 Sample Input

【样例输入1】 2736 【样例输入2】 9973

样例输出 Sample Output

【样例输出1】 7236 【样例输出2】 9973

WA60

#include<bits/stdc++.h>
using namespace std;
char s[100];
int maxn=-1,p;
int main(){
    gets(s);
    for(int i=0;i<strlen(s);i++){
        if(int(s[i])-48>maxn){
            maxn=int(s[i])-48;
            p=i;
        }
    }
    swap(s[0],s[p]);
    puts(s);
    return 0;
}

WA20

#include<bits/stdc++.h>
using namespace std;
string s;
int maxn=-1,p;
int main(){
    cin>>s;
    for(int i=0;i<s.size();i++){
        if(int(s[i])-48>maxn){
            maxn=int(s[i])-48;
            p=i;
        }
    }
    cout<<maxn;
    for(int i=0;i<s.size();i++){
        if(i==p) continue;
        cout<<s[i];
    }
    return 0;
}

求思路!

@周琪岳


0
已采纳
周琪岳
周琪岳
资深光能
资深光能

针对每两个数字进行交换模拟,并进行最大值更新(贪心),即可找出最优解

0
陈家傲
陈家傲
新手光能
新手光能

                                                                                                                                                                                  

我要回答