codeup 散列
题号:10000582
A题 :谁是你潜在的朋友
题目链接:http://codeup.cn/problem.php?cid=100000582&pid=0
#include <stdio.h>
#include<iostream>
using namespace std;
int main(){
int m,n;//n是人数,m是图书序号
while(scanf("%d%d",&n,&m)!=EOF&&n!=0){
int hashTable[205]={0};
int perNum[2000]={0};
for(int i=0;i<n;i++){
scanf("%d",&perNum[i]);
hashTable[perNum[i]]++;
}
for(int i=0;i<n;i++){
if(hashTable[perNum[i]]>1){
printf("%d\n",hashTable[perNum[i]-1]);
}else{
printf("BeiJu\n");
}
}
}
return 0;
}
运行结果:
B题 :分组统计
题目链接:http://codeup.cn/problem.php?cid=100000582&pid=1
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 2010;
int del(int a[],int n){ //排序并去掉相同的元素,由此确定输出的元素和顺序
sort(a,a+n);
int i,j;
for(j=0,i=1;i<n;i++){
if(a[j]!=a[i])
{
a[++j]=a[i];
}
}
return j+1;
}
int main(){
int m;//样例的个数
while(scanf("%d",&m)!=EOF){
while(m--){
int n;//数的个数
int num[100];//数的数组
int num_group[205]={0};//数的分组
int temp[maxn][maxn];
memset(temp,0,sizeof(temp)); //初始化二维数组
int gn,nn;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&num[i]);//输入每个元素
}
for(int i=0;i<n;i++){
scanf("%d",&num_group[i]);//输入对应元素的组
temp[num_group[i]][num[i]]++;
}
gn=del(num_group,n);
nn=del(num,n);
for(int i=0;i<gn;i++){
printf("%d={",num_group[i]);
for(int k=0;k<nn;k++){
printf("%d=%d",num[k],temp[num_group[i]][num[k]]);
if(k<nn-1) printf(",");
else printf("}\n");
}
}
}
}
return 0;
}
C题 :Be Unique
题目链接:http://codeup.cn/problem.php?cid=100000582&pid=2
#include <stdio.h>
#include <string.h>
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int num[100001],flag=0;
int hashTable[100001]={0};
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
hashTable[num[i]]++;
}
for(int i=0;i<n;i++){
if(hashTable[num[i]]==1){
flag=1;
printf("%d",num[i]);
break;
}
}
if(flag==0){
printf("None\n");
}
}
return 0;
}
运行结果:
D题 :String Subtraction (20)
题目链接:http://codeup.cn/problem.php?cid=100000582&pid=3
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int main(){
char ch;
char str1[10000];
char str2[10000];
int i = 0, j = 0;
while ((ch = getchar()) != '\n')
str1[i++] = ch;
while ((ch = getchar()) != '\n')
str2[ch] = 1;//置为1
for (j = 0; j < i; j++)
{
if (str2[str1[j]] == 0)
printf("%c", str1[j]);
}
printf("\n");
return 0;
}
运行j结果: