c++算法——hash哈希
hash算法也被称为散列算法,hash没有固定的公式更像是一种思想
例题
今天是星期几
题目描述
查看题目信息
输入一个1~7的整数分别对应着星期一至星期日,输出今天是星期几?星期一至星期日分别用以下方式表示:星期一:Monday星期二:Tuesday星期三:Wednesday星期四:Thursday星期五:Friday星期六:Saturday星期日:Sunday 如果输入的数据为1~7外的数,结果用Error表示。
输入格式
一个正整数n(0<n<10)。
输出格式
星期几的英文单词。
样例输入
5样例输出
Friday
简简单单打个表
#include <bits/stdc++.h>
using namespace std;int main(){string week[8]={"","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};int x;cin>>x;if(x<1||x>7){cout<<"Error"<<endl;}else{cout<<week[x]<<endl;}return 0;
}
去重排序
题目描述
输入 n 个正整数 ai ,按照从小到大的顺序输出不重复的数。
输入格式
第一行:n (1≤n≤5×106) 。
第二行:n 个用空格隔开的正整数 ai (1≤ai≤1000) 。
输出格式
每行一个正整数,为从小到大排序后的不重复的数。
样例输入
8 1 3 4 2 2 2 3 1
样例输出
1 2 3 4
这道题可以用hash来实现,桶排序用的就是hash的思想,每个数对应一个桶,里面存储出现的次数
十分简单
#include <bits/stdc++.h>
using namespace std;
int n,x,a[1010];
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>x;a[x]=x;}for(int i=1;i<=1000;i++){if(a[i]!=0){cout<<a[i]<<endl;}}return 0;
}
给大家两道题试试
1,珠心算测验
题目描述
珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。
某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?
最近老师出了一些测验题,请你帮忙求出答案。
输入格式
输入共两行,第一行包含一个整数n,表示测试题中给出的正整数个数。
第二行有n个正整数,每两个数之间用一个空格隔开,表示测试题中给出的正整数。
数据说明:对于100% 的数据,3≤n≤100,测验题给出的正整数大小不超过10,000。
输出格式
输出共一行,包含一个整数,表示测验题答案。
样例输入
4 1 2 3 4样例输出
2
砝码称重
题目描述
在现代质量计量中,砝码是质量量值传递的标准量具。
假设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重≤1000)。
你的任务是:根据给定的砝码(可能有多种不同的砝码,且同一种砝码可能有多个),计算可以称出的不同重量的个数。
输入格式
只有一行,为6个用空格隔开的正整数,分别表示6种砝码各自的数量。
输出格式
只有一行N,表示用这些砝码能称出的不同重量的个数,但不包含一个砝码也不用的情况。
样例输入
1 1 0 0 0 0样例输出
3问题提示
【样例说明】
可以称出的重量:1g、2g、1g+2g=3g,共三种。