原题链接:https://pintia.cn/problemsets/994805046380707840/problems/994805107638517760
一道逻辑思考题
数组s[ ]储存输入的号码,v[ ] 储存号码数字出现的次数(下标表示号码),arr[ ] 依次储存号码中出现的数字(无重复),
index[ ] 储存s[ i ] 在arr[ ] 的位置
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
int main(){
char s[11];
int v[11]={0};//记录号码数字出现的次数
int t=0;
int arr[11],index[11];
for(int i=0;i<11;i++){
cin>>s[i];
v[s[i]-'0']++;
}
for(int i=0;i<11;i++){
if(v[i]!=0){
arr[t]=i;//依次储存号码数字(无重复)
t++;
}
}
sort(arr,arr+t,cmp);//从大到小排序
for(int i=0;i<t;i++){
for(int j=0;j<11;j++){
if(s[j]-'0'==arr[i]){
index[j]=i;
}
}
}
cout<<"int[] arr = new int[]{"<<arr[0];
for(int i=1;i<t;i++){
cout<<","<<arr[i];
}
cout<<"};"<<endl;
cout<<"int[] index = new int[]{"<<index[0];
for(int i=1;i<11;i++){
cout<<","<<index[i];
}
cout<<"};"<<endl;
return 0;
}