(算法练习)——小白鼠排队

要求:
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));
		
	}
}
发布了105 篇原创文章 · 获赞 3 · 访问量 1970

猜你喜欢

转载自blog.csdn.net/weixin_42377217/article/details/103976408