p90小王子


私信TA

用户名:ZHOUJI

访问量:1863

签 名:

任落叶淌光飘散; 沁出这一片心海,映在胸间,化为今生的遗憾

等  级
排  名 644
经  验 3888
参赛次数 3
文章发表 1
年  龄 0
在职情况 学生
学  校 赤峰学院
专  业 计算机

  自我简介:

TA的其他文章

解题思路:
我写的比较麻烦,本程序是用字符串数组保存各个数据,为保证最后输出正确,将开始的字符串赋值到另外一个字符串数组a于b里(且各个字符串数组的下标与相对应的数据要一致),将a与b的字符串进行排序,比较后若一致,则清空里面的字符串,最后则都是不相关的数,后找到其下标,将数据转为int型,排序后输出,若有疑问请在评论里提。




注意事项:
因为输入的数据小于1000组,所以定义字符串数组要大于等于1000,且细节多,写代码需要细心。




参考代码:

#include<iostream>

#include<string>

#include<string.h>

#include<algorithm>

using namespace std;


int main()

{

    int n;

    while(cin>>n)

{

    if(n==0)

        break;

    string s[1000];

    for(int i=0;i<n;i++)

        cin>>s[i];

    string a[1000],b[10000];

    int m[1000]={0};

    int count=0;

    for(int i=0;i<n;i++)

    {

        a[i]=s[i];

        b[i]=s[i];

    }

    for(int i=0;i<n;i++)

    {

        sort(s[i].begin(),s[i].end());

        sort(a[i].begin(),a[i].end());

    }

    for(int i=0;i<n;i++)

    {

        int top=0;

        for(int j=i+1;j<n;j++)

        {

            if(s[j]!=""&&s[i]==s[j])

            {

                top=1;

                s[j].clear();

            }

        }

        if(top==1)

            s[i].clear();

    }

    int flag=0;

for(int i=0;i<n;i++)

    if(s[i]!="")

    {

        flag=1;

        int temp;

        for(int j=0;j<n;j++)

        {

            if(s[i]==a[j])

            {

                temp=j;

                break;

            }

        }

        for(int j=0;j<b[temp].length();j++)

        {

            int x=b[temp][j]-'0';

            for(int k=j;k<b[temp].length()-1;k++)

                x*=10;

            m[count]+=x;

        }

        count++;

    }

    if(flag==0)

        cout<<"None";

    else

    {

        sort(m,m+count);

        for(int i=0;i<count;i++)

            {

                if(i==0)

                    cout<<m[i];

                else

                    cout<<' '<<m[i];

            }

    }

    cout<<endl;

}

    return 0;

}


 

0.0分

0 人评分

  评论区