一、题目出处
PAT PGLT 决赛
题目链接:https://www.patest.cn/contests/gplt/L1-027
这个题目还是之前火过一段时间的含代码的出租房间广告
二、解题代码
1.思路
(1)将号码中不同的数字存到一个数组中,并以降序排序
(2)再根据号码的顺序查找对应数字的下标
按照这个思路做其实很简单
2.代码如下
#include<cstdio>
#include<algorithm>
#include<functional>
using namespace std;
int main()
{
char tel[100];
int temp[10]={0};
int arr[10];
int index[11];
int i,j;
int all=0;
gets(tel);
for(i=0;tel[i]!='\0';i++)
{
if(temp[tel[i]-'0']==0)
{
temp[tel[i]-'0']=1;
arr[all++]=tel[i]-'0';
}
}
//排序
sort(arr,arr+all,greater<int>());
//查找
for(i=0;tel[i]!='\0';i++)
{
for(j=0;j<all;j++)
{
if(tel[i]-'0'==arr[j])
{
index[i]=j;
break;
}
}
}
//输出
printf("int[] arr = new int[]{%d",arr[0]);
for(i=1;i<all;i++)
printf(",%d",arr[i]);
printf("};\n");
printf("int[] index = new int[]{%d",index[0]);
for(i=1;i<11;i++)
printf(",%d",index[i]);
printf("};\n");
return 0;
}