为虾米只有75分

P1012 [NOIP1998 提高组] 拼数

会不会有这样: 2 0000000 00
by JunGold @ 2017-07-28 15:09:32


6 321 32 407 135 13 217
by Albert @ 2017-07-31 22:37:06


想想: 10 和 1 程序: 101 实际: 110
by huangzirui @ 2017-08-13 16:45:19


@ JunGold 你输入一下 2 10 1 会是什么结果?
by huangzirui @ 2017-08-13 16:46:28


@[JunGold](/space/show?uid=39424) 在吗
by huangzirui @ 2017-08-13 16:51:46


就是说, 1。相等的就没必要比了,也不用循环。 2。如果长度相等,比谁大就可以了。 3。长度一大一小的话,就只要把小的增大,在自己的本身加上自己的字母,让长度达到相等,再进行“2”的比较。
by JunGold @ 2017-08-22 08:24:04


```cpp #include<bits/stdc++.h> using namespace std; int b(string as,string bs) { int i=0; if(as.size()<bs.size())//如jungold所说把他们长度比变相同 while(as.size()<bs.size()) { as+=as[i]; i++; } if(as.size()>bs.size()) while(bs.size()<as.size()) { bs+=bs[i]; i++; } if(as>bs)return 0;//比完了,OK结束完美收官 else return 1; } int main() { string a[20];//最多二十个。 int n;//几个字符串 cin>>n; for(int i=0;i<n;i++) cin>>a[i];//输入字符串 for(int i=0;i<n;i++)//用选择排序————我只会这个《》 { int tmp=i;//假设一个数a[i]是最大的话。。tmp就是最大字符串所在的位置。 for(int j=i+1;j<n;j++)//从后面开始查找最大的数 if(b(a[j],a[tmp])==0)tmp=j;////如果a[j]比a[tmp]大的话就把最大字串的位置放到j; string h=a[i];//交换我不说了 a[i]=a[tmp]; a[tmp]=h; } for(int i=0;i<n;i++)cout<<a[i];//输出 cout<<endl; } ```
by dyzxjzx @ 2017-08-22 08:53:07


我仿照jungold所说写了一个程序 还好吧??
by dyzxjzx @ 2017-08-22 08:54:21


|