数据结构_成绩查询_cjcx
问题描述
录入 n 个学生的成绩,并查询。
★数据输入
第一行输入包括 n、 m(1<=n<=50,000,1<=m<=100,000)两个数字。
接下来 n 行,每行包含名字和成绩,名字用字符串表示,长度不超过 4.成绩为不
超过 100 的非负整数,名字仅由小写字母组成。
接下来 m 行,每行包括一个名字。
★数据输出
输出 m 行,如果查询的学生不存在,输出”not,exist!”,否则输出学生的成绩。
输入示例
3 4
hbb 90
vayh 80
loog 85
leaf
loog
vayh
vyah
输出示例
not,exist!
85
80
not,exist!
★提示
n 个名字各不相同
60%的数据
1<=n,m<=2,000
100%的数据
1<=n<=50,000,1<=m<=100,000
解题思路
注意到 名字为不超过4的字符串
将名字中的字符转换为数字,a为1,b为2......,若长度不足4,则补0
这样每个名字都可以与四个数字abcd对应
这时候有两种做法
(1)开四维数组arr[27][27][27][27],用arr[a][b][c][d]存成绩
(2)开一维数组arr,对abcd分别附权值 26^0、26^1、26^2、26^3,用arr[a*26^0+b*26^1+c*26^2+d*26^3]存
用第二种做法会省一些空间,不会出现例如0233、0011这样前面有0的情况
补0是在后面补的233->2330 11->1100
而第一种会浪费掉这一部分空间
由于题目给出的成绩 0<=k<=99,对数组初始化时全部初始化为0,当作空,存的时候+1存,读取时候-1
code(第一种做法)
#include <stdio.h>
#include <stdlib.h>
#include <string.h> char arr[][][][]={};
int pos[]; void init(char *str, int &data)
{
memset(pos,,sizeof(int)*);
int len = strlen(str);
int i;
for(i=;i<len;i++)
{
pos[i] = str[i]-'a'+;
}
arr[pos[]][pos[]][pos[]][pos[]] = (char)(data+);
} void find(char *str)
{
memset(pos,,sizeof(int)*);
int len = strlen(str);
int i;
for(i=;i<len;i++)
{
pos[i] = str[i]-'a'+;
}
if(arr[pos[]][pos[]][pos[]][pos[]] == )
{
printf("not,exist!\n");
}
else
{
printf("%d\n",(int)(arr[pos[]][pos[]][pos[]][pos[]])-);
}
} int main()
{
int i;
int n,m;
char str[]={};
int data; scanf("%d %d",&n,&m);
getchar();
for(i=;i<n;i++)
{
scanf("%s %d",str,&data);
getchar();
init(str,data);
}
for(i=;i<m;i++)
{
scanf("%s",str);
getchar();
find(str);
} return ;
}
数据结构_成绩查询_cjcx的更多相关文章
- SQL基本查询_子查询(实验四)
SQL基本查询_子查询(实验四) 1.查询所有员工中薪水低于"孙军"的员工姓名和薪水: 2.查询与部门编号为"01"的岗位相同的员工姓名.岗位.薪水及部门号: ...
- C语言程序设计#成绩查询系统
学生成绩管理系统 [注释]:请点赞,好人一生平[yi]安[wo]. #codeblocks程序下编写 #include<stdio.h>#include<stdlib.h>// ...
- Oracle学习总结_day05_集合_连接查询
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day05_集合_连接查询 集合操作符 UNION ( ...
- mongodb_查询操作使用_条件查询、where子句等(转)
<?php /* mongodb_查询操作使用_条件查询.where子句等(转并学习) 1.find()/findOne() mongodb数据库的查询操作即使用find()或者findO ...
- PHP中CURL技术模拟登陆抓取网站信息,用与微信公众平台成绩查询
伴随微信的红火,微信公众平台成为许多开发者的下一个目标.笔者本身对于这种新鲜事物没有如此多的吸引力.但是最近有朋友帮忙开发微信公众平台中一个成绩查询的功能.于是便在空余时间研究了一番. 主要的实现步骤 ...
- 暑假闲着没事第一弹:基于Django的长江大学教务处成绩查询系统
本篇文章涉及到的知识点有:Python爬虫,MySQL数据库,html/css/js基础,selenium和phantomjs基础,MVC设计模式,ORM(对象关系映射)框架,django框架(Pyt ...
- Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解
Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解 Mysql慢查询开启 Mysql的查询讯日志是Mysql提供的一种日志记录,它用来记录在Mysql中响应 ...
- C语言 · 成绩查询系统
抱歉,昨天忘了往博客上更新,今天补上. 成绩查询系统 分值: 21 数学老师小y 想写一个成绩查询系统,包含如下指令: insert [name] [score],向系统中插入一条信息,表示名字为na ...
- [Oracle] 关系型数据库排序算法和数据结构以及关联查询
关系型数据库排序算法和数据结构以及关联查询 1. Merge sort 理解merge sort算法将有助于更好地理解数据库join操作 - merge join 算法逻辑 将2个有序的大小为N/2的 ...
随机推荐
- Codeforces 786B. Legacy 线段树+spfa
题目大意: 给定一个\(n\)的点的图.求\(s\)到所有点的最短路 边的给定方式有三种: \(u \to v\) \(u \to [l,r]\) \([l,r] \to v\) 设\(q\)为给定边 ...
- dockerfile mysql
FROM centos6.6-mysql5.5:0.0.4 MAINTAINER syberos:wangmo RUN mv /etc/my.cnf /etc/my.cnf.bak ADD my.cn ...
- SqlServer 用户和权限操作
use [master] GO --创建用户,Test,密码Test CREATE LOGIN [TestUser] WITH PASSWORD=N'Test', DEFAULT_DATABASE=[ ...
- [转】LTE整体架构和协议架构概述
1.1 LTE整体架构 LTE(Long Term Evolution,长期演进)是由3GPP(The 3rd Generation Partnership Project,第三代合作伙伴计划)组织制 ...
- 【转】 Pro Android学习笔记(七八):服务(3):远程服务:AIDL文件
目录(?)[-] 在AIDL中定义服务接口 根据AIDL文件自动生成接口代码 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.n ...
- 基于mjpg-streamer网络视频服务器移植
MJPG简介: MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名. MJPEG 全名为 "Motion Joint Photographic Experts Group&q ...
- ruby on rails 中render的
Ruby rails页面跳转代码如下: 1.render(:text => string) 2.render(:inline => string, [:type => "r ...
- system中有空格怎么办
原始路径: C:\\Program Files\\putty\\putty.exe 改为: char *cmd="C:\\\"Program Files\"\\putty ...
- 【新手向】Centos系统文件权限的系统阐述与演示
在linux服务器日常管理中,我们会经常管理查看文件或者文件夹的权限内容以保证服务的正常运行.今天就和大家聊聊文件权限的那些事. 查看文件的权限情况可以用 ll 命令例: ll -d /kid #查看 ...
- 初识DDD
DDD强调专注于业务问题域的需要:其专业术语.为何开发该软件的关键原因,以及对于业务来说什么才是成功 问题域涉及你当前正在构建软件的主题领域 DDD强调的是,在致力于为大型复杂业务系统创建软件时,专注 ...