【C/C++】PAT A1025 Ranking/算法笔记
题目意思大概是输入一堆人的学号,成绩,给出学号,总排名,考场号,考场内排名。
这是我第一次写的:
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 30005;
struct Student
{
int registnum[13];
int score;
int rank_in_group;
int group;
};
Student stu[maxn]; //创建数组用于存储
bool cmp(Student a, Student b)
{
if(a.score != b.score) return a.score > b.score;
else return a.registnum < b.registnum;
}
int main()
{
//输入
int n, k, num=0;
scanf("%d", &n);
//fflush(stdin);
for (int i = 1; i <= n; i++) //考场号
{
scanf("%d", &k);
///fflush(stdin);
for (int j = 0; j < k; j++)
{
scanf("%d%d", &stu[num].registnum, &stu[num].score);
stu[num].group = i;
num++;
}
//组内排名
sort(stu + num - k, stu + num, cmp);
//组内排号
stu[num - k].rank_in_group = 1;
for (int j = 1; j < k; j++)
{
if (stu[num - k + j].score != stu[num - k + j - 1].score)
{
stu[num - k + j].rank_in_group = stu[num - k + j - 1].rank_in_group + 1;
}
else
{
stu[num - k + j].rank_in_group = stu[num - k + j - 1].rank_in_group;
}
}
}
printf("%d\n", num); //总人数
sort(stu, stu + num, cmp);
int r = 1;
for (int i = 0; i < num; i++)
{
if (i>0 && stu[i].score != stu[i-1].score) //避免出现数组访问问题
{
r = i + 1;
}
printf("%d %d %d %d\n", stu[i].registnum, r, stu[i].group, stu[i].rank_in_group);
}
system("pause");
}
但是有问题,那个学号总是输入不对。后来一想是因为13位数字的数组,输入的话得一个一个输入(输入到每个位置)。
但是直接int a[13]然后输入scanf("%d",&a)这样
肯定只能输入到一个里面
比如这段测试代码:

(剩余的奇怪数字是因为没有清内存)
然而13位的学号,对于单个是int型的数组来说,又超内存了
int是一种数据类型,在编程语言C中,是用于定义整数类型变量的标识符。在一般的电脑中,int占用4字节,32比特,数据范围为-21474836482147483647[-2^312^31-1]
然后就把改成了输入字符串数组,因为用scanf("%s",a)的话,他就会自己放进去了

【C/C++】PAT A1025 Ranking/算法笔记的更多相关文章
- 学习Java 以及对几大基本排序算法(对算法笔记书的研究)的一些学习总结(Java对算法的实现持续更新中)
Java排序一,冒泡排序! 刚刚开始学习Java,但是比较有兴趣研究算法.最近看了一本算法笔记,刚开始只是打算随便看看,但是发现这本书非常不错,尤其是对排序算法,以及哈希函数的一些解释,让我非常的感兴 ...
- Bayesian Personalized Ranking 算法解析及Python实现
1. Learning to Rank 1.1 什么是排序算法 为什么google搜索 ”idiot“ 后,会出现特朗普的照片? “我们已经爬取和存储了数十亿的网页拷贝在我们相应的索引位置.因此,你输 ...
- 算法笔记--数位dp
算法笔记 这个博客写的不错:http://blog.csdn.net/wust_zzwh/article/details/52100392 数位dp的精髓是不同情况下sta变量的设置. 模板: ]; ...
- 算法笔记--lca倍增算法
算法笔记 模板: vector<int>g[N]; vector<int>edge[N]; ][N]; int deep[N]; int h[N]; void dfs(int ...
- 算法笔记--STL中的各种遍历及查找(待增)
算法笔记 map: map<string,int> m; map<string,int>::iterator it;//auto it it = m.begin(); whil ...
- 算法笔记--priority_queue
算法笔记 priority_queue<int>que;//默认大顶堆 或者写作:priority_queue<int,vector<int>,less<int&g ...
- 算法笔记--sg函数详解及其模板
算法笔记 参考资料:https://wenku.baidu.com/view/25540742a8956bec0975e3a8.html sg函数大神详解:http://blog.csdn.net/l ...
- 算法笔记——C/C++语言基础篇(已完结)
开始系统学习算法,希望自己能够坚持下去,期间会把常用到的算法写进此博客,便于以后复习,同时希望能够给初学者提供一定的帮助,手敲难免存在错误,欢迎评论指正,共同学习.博客也可能会引用别人写的代码,如有引 ...
- 算法笔记_067:蓝桥杯练习 算法训练 安慰奶牛(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是 ...
随机推荐
- flask cache
http://brunorocha.org/python/flask/using-flask-cache.html 如何在大项目中使用cache 新建全局cache.py cache = Cache( ...
- python datetime 增减以月为单位的时间段
datetime.timedelta(days=10) # 可以 datetime.timedelta(months=1) # 不可以 替代: from datetime import date ...
- JAVA学习(七)
今天讲师又讲了一个多小时类的注意点,例如书写格式什么的,这些我c++中都学过了,所以很快看完. 然后又讲了IDE,我选择的是IntelliJ IDEA. 刚开始官网登不上去,花了一个小时,从网上翻了各 ...
- sql关联修改
UPDATE p set p.ClientID = c.id from PaymentTable p left JOIN ClientTable c on p.ClientID = c.Clie ...
- 【JAVA】笔记(7)--- 数组精讲
数组的静态初始化: 1.一维数组: int [ ] arr = { 1,2,3,4 } ; Object [ ] arr = { new Object ( ) , new Object ( ) , ...
- 一文看懂socket编程
1.网络模型的设计模式 1.1 B/S模式 B/S: Browser/Server,浏览器/服务器模式,在一端部署服务器,在另外外一端使用默认配置的浏览器即可完成数据的传输. B/S结构是随着互联网的 ...
- Python | Python语法基础
目录 前言 1. 变量与简单数据结构 2. 列表相关 3. 集合 4. If语句 5. 字典 6. 用户输入和while循环 7. 函数 8. 类与对象 9. 文件 10. 异常 11. 测试 最后 ...
- 14-1-Unsupervised Learning ---dimension reduction
无监督学习(Unsupervised Learning)可以分为两种: 化繁为简 聚类(Clustering) 降维(Dimension Reduction) 无中生有(Generation) 所谓的 ...
- X-MagicBox-820的luatOS之路连载系列2
这块MagicBox小巧但外设丰富,盖板上的小液晶屏竟有240*240的分辨率.点亮后若是用最小字体,真有看瞎老王的不瞎之眼之势. 这种屏在某宝也是比较多的,大概就是长这样子: 我们这个820的盖板上 ...
- [luogu5665]划分
暴力dp,用f[i][j]表示前i个数,最后一个区间是(j,i]的最小答案,转移方程用可以用前缀和来优化,复杂度为$o(n^3)$(然后可以各种优化到$o(n^2)$,但这不需要)输出f[i][j], ...