原题链接
STL set从大到小排序
字符串转化成数组 是char->int 要做处理
map数组下标映射
for(int i = 0; i < telnumber.length(); i++)
{
int x = telnumber[i] - '0';
arr.insert(x);
}
#include <bits/stdc++.h>
using namespace std;
struct compare
{
bool operator()(const int& a, const int& b)
{
return a > b;
}
};
struct node
{
int index;
int id;
node(int _in, int _id): index(_in), id(_id) {}
};
set<int, compare> arr; //不重复号码从大到小排序
map<int, int> mp; //映射下标
int main()
{
string telnumber;
cin >> telnumber;
for(int i = 0; i < telnumber.length(); i++)
{
int x = telnumber[i] - '0';
arr.insert(x);
}
int num = 0; //记录下标
for(auto it = arr.begin(); it != arr.end(); it++)
{
mp[*it] = num;
num++;
if(it == arr.begin())
{
cout << "int[] arr = new int[]{";
cout << *it;
}
else cout << "," << *it;
}
cout << "};" << endl;
for(int j = 0; j < telnumber.size(); j++) //index数组
{
int x = telnumber[j] - '0';
if(j == 0)
{
cout << "int[] index = new int[]{";
cout << mp[x];
}
else cout << "," << mp[x];
}
cout << "};" << endl;
return 0;
}