2 条题解

  • 0
    @ 2025-4-5 19:29:05
    #include<bits/stdc++.h>
    using namespace std;
    struct student{
    	string name;
    	int score;
    } a[110];
    int main(){
    	int n;
    	cin>>n;
    	for(int i=0;i<n;i++){
    		cin>>a[i].name;
    		cin>>a[i].score;
    	}
    	for(int i=0;i<n;i++){
    		for(int j=0;j<n;j++){
    			if(a[j].score<a[j+1].score){
    				swap(a[j],a[j+1]);
    			}
    			if(a[j].score==a[j+1].score){
    				if(a[j].name[0]>a[j+1].name[0]){
    					swap(a[j],a[j+1]);
    				}
    			}
    		}
    	}
    	for(int i=0;i<n;i++){
    		cout<<a[i].name<<" ";
    		cout<<a[i].score<<endl;
    	}
    	return 0;
    }
    

    c++做法

    • 0
      @ 2025-3-15 17:27:35

      参考如下,用了冒泡排序。(python)

      (不是最简单的)→←

      其他方法欢迎讨论!^_^

      n = int(input())
      score = []
      for _ in range(n):
          score.append(input().split())
      for i in range(len(score)):
          while i > 0:
              a,b = score[i],score[i-1]
              if a[1] > b[1] or (a[1] == b[1] and a[0][0] < b[0][0]):
                  score[i],score[i-1] = b,a
              else:
                  break
              i -= 1
      for [m,s] in score:
          print(m,s)
      
      • 1

      信息

      ID
      467
      时间
      1000ms
      内存
      256MiB
      难度
      8
      标签
      递交数
      17
      已通过
      5
      上传者