CCFNOI1042发奖学金 C语言二维数组解法0ms 204KB

本人高二党,在本站(大佬云集)搜索CCF NOI 1042的题解时
传送门http://oj.noi.cn/oj/#main/show/1042
大部分都采用的是结构体+指针的解法
虽然运行时间也是在0ms
但是会大大增大运行空间
如果程序有什么不足或者有更优算法
请多多包涵新人=-=(不会术语)
莫名其妙的思路:
1.结构体玩不明白!
2.可以用x方向储存学号,y方向1,2,3储存语文,数学,英语,4的话算一下总分(这是数据输入部分)
3.排序的话就是小心机喽,其实就是正常排序,但是只排序有用的部分,按照总分,语文成绩和学号来排,交换的时候交换三个有用的部分就行咯
C语言

#include<stdio.h>
int main()
{
   int n,j,i,tem;
   scanf("%d",&n);
   int s[n][5];
   for(j = 0;j<n;j++)
    scanf("%d %d %d",&s[j][1],&s[j][2],&s[j][3]),s[j][0] = j+1,s[j][4] = s[j][1]+s[j][2]+s[j][3];
   for(j = 0;j<n;j++)
    for(i = 0;i<n-1;i++)
    {
        if(s[i][4]<s[i+1][4])
        {
       tem = s[i][4];
       s[i][4] = s[i+1][4];
       s[i+1][4] = tem;
       tem = s[i][1];
       s[i][1] = s[i+1][1];
       s[i+1][1] = tem;
       tem = s[i][0];
       s[i][0] = s[i+1][0];
       s[i+1][0] = tem;
        }
     if(s[i][4]==s[i+1][4]&&s[i][1]<s[i+1][1])
     {
       tem = s[i][4];
       s[i][4] = s[i+1][4];
       s[i+1][4] = tem;
       tem = s[i][1];
       s[i][1] = s[i+1][1];
       s[i+1][1] = tem;
       tem = s[i][0];
       s[i][0] = s[i+1][0];
       s[i+1][0] = tem;
     }
    }
    j = 0;
    while(j<5)
        printf("%d %d\n",s[j][0],s[j][4]),j++;
    return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值