PAT乙级 1065 单身狗题目
2016-12-26 10:56
471 查看
1065. 单身狗(25)
“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。输入格式:
输入第一行给出一个正整数N(<=50000),是已知夫妻/伴侣的对数;随后N行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(<=10000),为参加派对的总人数;随后一行给出这M位客人的ID,以空格分隔。题目保证无人重婚或脚踩两条船。
输出格式:
首先第一行输出落单客人的总人数;随后第二行按ID递增顺序列出落单的客人。ID间用1个空格分隔,行的首尾不得有多余空格。
输入样例:
3 11111 22222 33333 44444 55555 66666 7 55555 44444 10000 88888 22222 11111 23333
输出样例:
5 10000 23333 44444 55555 88888
解题分析
解题关键是寻找夫妻伴侣对同时存在参加派对队伍中的对数。关键函数为数组中的find函数。
用法实例
int temp[100]={3,4,2,1}
find(temp,temp+100,1)//返回找到的内存地址,取* 可以重新赋值如 temp[3]=1;*find(temp,temp+100,1)=2;此时temp[3]=2;//如找不到 *find(temp,temp+100,1)==0
代码
#include<iostream> #include<string> #include <algorithm> #include<iomanip> using namespace std; int main() { int n,m; //题目的N,M cin>>n; int id[50000][2]={}; //定义二维数组存夫妻伴侣对编号。 int couples=0; //参加派对的夫妻对数。 for(int i=0;i<n;i++) //输入已知的夫妻伴侣ID,成对输入。 { do { cin>>id[i][0]>>id[i][1]; }while(getchar()!='\n'); } cin>>m; int *peopleid=new int [m]; //定义动态一维数组存参加派对的人员编号。 for(int i=0;i<m;i++) cin>>peopleid[i]; for(int i=0;i<n;i++) //循环查找, id[i][0]和 id[i][1]同时存在 { if((*find(peopleid,peopleid+m,id[i][0])==id[i][0])&&(*find(peopleid,peopleid+m,id[i][1])==id[i][1]))//关键代码 { couples++; *find(peopleid,peopleid+m,id[i][0])=1000000; //将存在的夫妻编号赋值1000000,控制不输出。 *find(peopleid,peopleid+m,id[i][1])=1000000; } } sort(peopleid,peopleid+m); //排序,题目要求从小到大 cout<<m-couples*2<<endl; //落单人数 if(m-couples*2!=0) { cout<<setiosflags(ios::right)<<setfill('0')<<setw(5)<<peopleid[0];//控制输出 for(int i=1;i<m;i++) { if(peopleid[i]!=1000000) cout<<' '<<setw(5)<<peopleid[i]; else break; } } delete [] peopleid; return 0; }
相关文章推荐
- 1065. 单身狗(25) PAT乙级真题
- pat 乙级 1065 单身狗
- [PAT-乙级]1065.单身狗
- PAT乙级 1065. 单身狗(25)
- [PAT乙级]1065. 单身狗(25)
- PAT乙级 1065. 单身狗(25)
- 乙级 PAT 1065. 单身狗(25)
- PAT 乙级 1065. 单身狗(25)
- pat乙级1065. 单身狗(25)
- pat 乙级 1065. 单身狗(25)
- 1065. 单身狗(25)-PAT乙级真题
- PAT 乙级 1065. 单身狗(25)
- PAT乙级真题 1065. 单身狗(25)
- PAT 乙级 1065单身狗(25) 情人节做这题真的是太合适了~
- PAT乙级1065. 单身狗(25)
- PAT 1065. 单身狗(25)
- PAT乙级1061-1065
- 1065. 单身狗(25) PAT
- 1065. 单身狗(25) PAT乙级&&1121. Damn Single (25) PAT 甲级
- 【PAT乙级题目1019】数字黑洞