PAT 1065 乙等 (单身狗) c++版本
2017-04-25 21:07
246 查看
思路: 用ID作为数组a1下标,输入参加派对的人时,a1[ID]++; a1数组中值为1的为参加派对的人 将已知夫妻关系的人顺序输入到数组a,奇偶成对(为奇数下标时,向前为夫妻下标;偶数下 标时,向后为夫妻下标。LOOP <顺序遍历a数组,判断(a1[a[i]]==1,表示此人在参加派对)?, 如果Y,则判断i的奇偶,根据规律判断自己的配偶有没有来(eg: a1[a[i+1]]==1 ?),如果 夫妻双方都在,a1[a[i]]++, num++(非单身人数);> POOL 。 遍历结束后,a1数组中值为1 的人都为单身,按要求打印即可。
注意:测试点3 判断id输出是否为5位。
注意:测试点3 判断id输出是否为5位。
#include <iostream> #include <string> using namespace std; string trans(int n){ string s = to_string(n); while (s.length() != 5){ s = "0" + s; } return s; } int main() { int n(0); // 已知夫妻对数 cin >> n; int *a = new int[2 * n]; for (int i = 0; i < 2 * n; i++){ cin >> a[i]; } int a1[100000] = {}; int m(0); //参加派对的人数 cin >> m; for (int i = 0; i < m; i++){ int temp; cin >> temp; a1[temp]++; } int num(0); //记录参加派对的非单身人数 for (int i = 0; i < 2*n; i++){ if (a1[a[i]] !=0 ){ if (i % 2 == 0){ if (a1[a[i + 1]] !=0){ a1[a[i]]++; num++; } } else{ if (a1[a[i - 1]] != 0){ a1[a[i]]++; num++; } } } } if (m - num != 0) cout << m - num << endl; else cout << m - num; int d = m - num; for (int i = 0; i < 100000; i++){ if (a1[i] == 1){ d--; if (d != 0) cout << trans(i) << " "; else cout << trans(i); } } return 0; }
相关文章推荐
- PAT乙级 1065 单身狗题目
- PAT-B 1065. 单身狗
- 1065. 单身狗(25) PAT
- PAT 乙级 1065单身狗(25) 情人节做这题真的是太合适了~
- PAT乙级 1065. 单身狗(25)
- 1065. 单身狗(25)-PAT乙级真题
- PAT乙级1065. 单身狗(25)
- [PAT-乙级]1065.单身狗
- PAT Basic 1065. 单身狗(25)(C语言实现)
- 单身狗(PAT-1065)
- PAT乙级真题 1065. 单身狗(25)
- PAT-B1065. 单身狗
- PAT 1065. 单身狗(25)
- PAT 1065.单身狗
- PAT 1067 乙等 (试密码) c++ 版本
- PAT 乙级 1065. 单身狗(25)
- pat 乙级 1065 单身狗
- PAT 1014 乙等 (福尔摩斯的约会) 纯C++版本
- PAT 乙级 1065. 单身狗(25)
- pat 乙级 1065. 单身狗(25)