题目链接:
https://pintia.cn/problem-sets/994805260223102976/problems/994805263964422144
AC代码:
#include <bits/stdc++.h>
using namespace std;
int shoujiao[6];
int stud[1000][10];
int main(){
int N,M;
scanf("%d%d",&N,&M);
for(int i=0;i<M;i++){
int tmp;
scanf("%d",&tmp);
shoujiao[i]=tmp;
}
int tolpoe=0;//总人数
int tol_item=0;//查缴的总物品数
for(int i=0;i<N;i++){
char name[4];
scanf("%s",name);
int num;
scanf("%d",&num);
for(int j=0;j<num;j++){
int temp;
scanf("%d",&temp);
stud[i][j]=temp;
}
int cnt=0;//记录输出学生姓名
int flag=0;//记录该学生是否有要被收缴的物品
for(int j=0;j<num;j++){
if(find(shoujiao,shoujiao+M,stud[i][j])!=shoujiao+M){
flag=1;
tol_item++;
if(cnt==0){
tolpoe++;
printf("%s: ",name);//
printf("%04d",stud[i][j]);//输出必为4位数,所以不能是%d
//举例:若收缴物品为0232,若用%d输出,则只会输出232,与题意要求不符
}
else{
printf(" %04d",stud[i][j]);//输出必为4位数,所以不能是%d
}
cnt++;
}
}
if(flag)
printf("\n");
}
printf("%d %d",tolpoe,tol_item);
}
二刷:
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
using namespace std;
string shoujiao[6];
int main(){
int N,M,k,i,j;
cin>>N>>M;
for(i=0;i<M;i++){
cin>>shoujiao[i];
}
int cnt=0,sum=0;
for(i=0;i<N;i++){
vector<string> ans;
string name,tmp;
int num;
cin>>name>>num;
for(j=0;j<num;j++){
cin>>tmp;
for(k=0;k<M;k++){
if(shoujiao[k]==tmp)
ans.push_back(tmp);
}
}
if(ans.size()>0){
cnt++;
cout<<name<<":";
int len=ans.size();
for(k=0;k<len;k++){
cout<<" "<<ans[k];
sum++;
}
cout<<endl;
}
}
cout<<cnt<<" "<<sum;
}
三刷:
#include <iostream>
#include <cstdio>
#include <string>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
string shoujiao[6];
int main(){
int N,M;
scanf("%d%d",&N,&M);
for(int i=0;i<M;i++)
cin>>shoujiao[i];
map<string,vector<string> > mp;
int per=0,course=0;
for(int i=0;i<N;i++){
string tmp;
cin>>tmp;
int num;
scanf("%d",&num);
for(int j=0;j<num;j++){
string tp;
cin>>tp;
for(int k=0;k<M;k++)
if(tp==shoujiao[k])
mp[tmp].push_back(tp);
}
if(mp[tmp].size()==0)
continue;
cout<<tmp<<":";
per++;
for(int i=0;i<mp[tmp].size();i++){
cout<<" "<<mp[tmp][i];
course++;
}
cout<<endl;
}
printf("%d %d",per,course);
return 0;
}