题目链接:https://www.patest.cn/contests/gplt/L1-027
解法:
#include<iostream>
#include<memory.h>
#include<string>
using namespace std;
int getloc(int arr[], int q, int l)
{
for (int i = 0;i < l;i++)
if (arr[i] == q)
return i;
return -1;//错误返回-1
}
int main()
{
string str;
cin >> str;
bool *exist = new bool[10];
int index[11];
memset(exist, 0, sizeof(exist));
int len = 0;
int q = 0;
for (int i = 0;i < 11;i++)
exist[int(str[i])-'0'] = true;
for (int m = 0;m < 10;m++)
if (exist[m] == true)
len++;
int *arr = new int[len];
for (int i = 9;i >= 0;i--)//直接从大的数字开始填入数组,就不用排序了
if (exist[i] == true)
{
arr[q] = i;
q++;
}
for (int i = 0;i < 11;i++)
{
index[i] = getloc(arr, int(str[i] - '0'), len);
}
cout << "int[] arr = new int[]{";
for (int i = 0;i < len-1;i++)
cout << arr[i] << ",";
cout << arr[len - 1] << "};";
cout << endl;
cout << "int[] index = new int[]{";
for (int i = 0;i < 10;i++)
cout << index[i] << ",";
cout << index[10] << "};";
system("PAUSE");
return 0;
}