首页 > 试题广场 >

小白鼠排队

[编程题]小白鼠排队
  • 热度指数:21218 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
N只小白鼠(1 <= N <= 100),每只鼠头上戴着一顶有颜色的帽子。现在称出每只白鼠的重量,要求按照白鼠重量从大到小的顺序输出它们头上帽子的颜色。帽子的颜色用“red”,“blue”等字符串来表示。不同的小白鼠可以戴相同颜色的帽子。白鼠的重量用整数表示。

输入描述:
多案例输入,每个案例的输入第一行为一个整数N,表示小白鼠的数目。
下面有N行,每行是一只白鼠的信息。第一个为不大于100的正整数,表示白鼠的重量,;第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。

注意:白鼠的重量各不相同。


输出描述:
每个案例按照白鼠的重量从大到小的顺序输出白鼠的帽子颜色。
示例1

输入

3
30 red
50 blue
40 green

输出

blue
green
red
/*
 * @Author: Spring Breeze
 * @Date: 2021-06-29 19:48:16
 * @FilePath: \algorithm\test.c
 * @LastEditTime: 2022-03-22 19:00:23
 */
#include <stdio.h>
#include <string.h>
typedef struct
{
  int count;
  char color[20];
} Rat;
// 冒泡排序
int main()
{
  int num, i = 0;
  scanf("%d", &num);
  Rat rats[num];
  while (scanf("%d %s", &rats[i].count, &rats[i].color) != EOF && i < num)
    i++;
  for (int m = 0; m < num; m++)
    for (int n = 1; n < num - m; n++)
      if (rats[n].count > rats[n - 1].count)
      {
        int count = rats[n - 1].count;
        char color[20];
        strcpy(color, rats[n - 1].color);
        rats[n - 1].count = rats[n].count;
        strcpy(rats[n - 1].color, rats[n].color);
        rats[n].count = count;
        strcpy(rats[n].color, color);
      }
  for (int i = 0; i < num; i++)
    printf("%s\n", rats[i].color);
  return 0;
}


发表于 2022-03-22 19:02:49 回复(0)
#include<stdio.h>
#include<stdlib.h>

typedef struct
{
	int weight;
	char color[10];
}mouse;

int cmp(const void *a,const void *b)
{
	mouse c=*((mouse *)a);
	mouse d=*((mouse *)b);
	return d.weight-c.weight;
}

int main()
{
	mouse m[101];
    int n,i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d%s",&m[i].weight,m[i].color);
	qsort(m,n,sizeof(m[0]),cmp);

	for(i=0;i<n;i++)
		printf("%s\n",m[i].color);
	return 0;
}

发表于 2022-03-12 15:49:03 回复(0)
  • 按小白鼠的重量降序排序
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Mouse
    {
        int wight;
        char color[11];
    }mouse;
    
    int n;
    mouse m[101];
    
    int cmp(const void* lhs, const void* rhs)
    {
        return((mouse*)rhs)->wight - ((mouse*)lhs)->wight; 
    }
    
    int main()
    {
        while (scanf("%d", &n) != EOF)
        {
            for (int i = 0; i < n; i++)
            {
                scanf("%d %s", &m[i].wight, m[i].color);
            }
            qsort(m, n, sizeof(mouse), cmp);
            for (int i = 0; i < n; i++)
            {
                printf("%s\n", m[i].color);
            }
        }
        return 0;
    }

发表于 2022-03-01 21:24:49 回复(0)
建立结构体,比较weight的大小,运用qsort函数,结构体一级比较:return (*(struct all * )a).weight<(*(struct all * )b).weight;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct all{
    int weight;
    char colour[10];
}all;

int n;
int cmp(const void *a,const void *b){
    return (*(struct all *)b).weight > (*(struct all *)a).weight ? 1 : -1;
}
int main(){
    while(scanf("%d\n",&n)!=EOF){
        all str[n];
        for(int i=0;i<n;i++){
            scanf("%d %s\n",&str[i].weight,&str[i].colour);
        }
        qsort(str,n,sizeof(str[0]),cmp);
        for(int i=0;i<n;i++){
            printf("%s\n",str[i].colour);
        }
    }
    return 0;
}


发表于 2022-02-22 16:32:40 回复(0)
#include<stdio.h>
typedef struct{
	int weight;
	char color[10];
}mouse;
int main(){
	int n,i,tem,j;
	mouse a[100],temp;;
	while(scanf("%d\n",&n)!=EOF){
		i=n;
		while(i){
			scanf("%d %s",&a[i-1].weight,a[i-1].color);
			i--;
		}
		for(i=0;i<n;i++){
			tem=i;
			for(j=i+1;j<n;j++){
				if(a[j].weight>a[tem].weight)
				tem=j;
			}
			temp=a[i];
			a[i]=a[tem];
			a[tem]=temp;
		}
		for(i=0;i<n;i++)
		printf("%s\n",a[i].color); 
	}
} 

发表于 2022-01-14 17:02:55 回复(0)