这一题思路很简单,将输入的电话号码先进行去重处理,将去重后的数字放到一个新的数组里,然后对其进行从大到小排序,最后再将原始输入的电话号码与排好序的数组元素相比较,若和某一项元素一致,就输入数组元素的下标。
#include<bits/stdc++.h>
using namespace std;
int cmp(int x,int y)
{
return x>y;
}
int main()
{
string a;
cin>>a;
int b[11],c[11],k=0,flag[11]={0};
for(int i=0;i<11;i++)
{
b[i]=a[i]-'0';
}
for(int i=0;i<11;i++)
{
if(flag[b[i]]==0)//若此元素之前未出现过
{
c[k]=b[i];
k++;
flag[b[i]]=1;
}
}
sort(c,c+k,cmp);//排序
cout<<"int[] arr = new int[]{";
for(int i=0;i<k;i++)
{
if(i==0)
cout<<c[i];
else
{
cout<<","<<c[i];
}
}
cout<<"};";
cout<<endl;
cout<<"int[] index = new int[]{";
for(int i=0;i<11;i++)
{
for(int j=0;j<k;j++)
{
if((a[i]-'0')==c[j])
{
if(i==0)
{
cout<<j;
}
else
{
cout<<","<<j;
}
}
}
}
cout<<"};";
return 0;
}