要求:
http://codeup.cn/problem.php?cid=100000581&pid=5
说明:
现在每次提了代码之后盯着那个评分的圈一直转,看到绿色简直快哭出来= =
这一题一开始想用结构体,但奈何用了结构体之后反而更麻烦了。。而且结构体排序这一块还不熟,排序也有问题。。。重写改用数组分开统计之后,一次就过了~
思路**用一个复制的数组number【2】**记录排序前的数据,然后将排序后的数据挨个查找是否与排序前的相同,同,则返回与排序前相同下标的字符串(说的比较绕,实际很好理解)
虽然这样时间复杂度有点不忍直视,but,暂时就这么处理吧~
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
bool cmp(int a,int b){
if(a != b) return a >b;
}
char str[100][10];
int main(){
int n;
int number1[100];
int number2[100];
char str[100][10];
while(scanf("%d",&n) != EOF){
for(int i = 0;i<n;i++){
scanf("%d %s",&number1[i],str[i]);
number2[i] = number1[i];
}
sort(number1,number1 + n,cmp);
for(int i= 0;i <n;i++){
for(int j = 0;j <n;j++){
if(number1[i] == number2[j]){
printf("%s\n",str[j]);
}
}
}
memset(number1,0,sizeof(number1));
memset(number2,0,sizeof(number2));
memset(str,0,sizeof(str));
}
}