#include <bits/stdc++.h> using namespace std; int n,m,a[100000]; string x,y,t; vector<int> v; int main() { memset(a,-1,sizeof a);//将a数组全部赋值为-1 cin>>n; for (int i=1;i<=n;i++) { cin>>x>>y; a[stoi(x)] = stoi(y); a[stoi(y)] = stoi(x); } cin>>m; for(int i=1;i<=m;i++) { cin>>t; if(a[stoi(t)]==-1)//没有对象; v.push_back(stoi(t));//加入v后面 else if(a[a[stoi(t)]]==stoi(t))//情侣暂时有一个 a[stoi(t)]=-2;//将他的另一半赋值为-2 else//情侣都来了,a[a[stoi(t)]]=-2时 a[a[stoi(t)]]=stoi(t); } for(int i=0;i<=99999;i++) { if(a[i]==-2) v.push_back(i); } sort(v.begin(),v.end()); cout<<v.size()<<endl; for(auto i:v){ if(i!=v[0]) cout<<" "; printf("%05d",i); } return 0; }
时间: 2024-04-15 18:26:55 浏览: 162
这段代码是一个关于情侣配对的题目。它的实现思路是通过一个数组a来记录情侣的配对关系。首先,将数组a全部初始化为-1。然后,根据输入的情侣信息,将每对情侣的编号作为数组a的下标,将对应的情侣的编号作为数组a的值。如果一个人没有对象,则将其编号加入到vector v中。如果一个人有对象,但是对方的对象不是自己,则将另一半的编号赋值为-2。最后,遍历数组a,将值为-2的编号加入到vector v中。排序后输出vector v的大小以及其中的元素。
需要注意的是,这段代码中使用了一些C++标准库头文件,如bits/stdc++.h和vector。并且使用了一些C++11的特性,如auto关键字和lambda表达式。在运行代码之前,请确保你的编译器支持这些特性。
相关问题
#include<bits/stdc++.h> #include <stdio.h> string a; int main() { cin>>a; cout<<a; return 0; }为什么报错
这段代码中出现错误的原因可能是:
1. 错误的头文件引用:`#include<bits/stdc++.h>`在标准C++库中并不存在。如果你想包含所有的头文件,应该直接写`#include <iostream>`,然后自己添加其他需要的头文件,例如`#include <string>`。
2. 字符串类型不匹配:`string a;` 和 `cin>>a;` 需要匹配。如果`bits/stdc++.h`中没有定义`string`,你可能需要使用`std::string`,或者如果你的环境中支持,也可以使用`std::getline(cin, a)`从输入流读取整个行。
3. 缺少命名空间:`std::cout`和`std::cin`是在`std`命名空间下的,所以在使用之前你需要加上`using namespace std;` 或者指定完整名称,如`std::cout`。
修正后的代码可能会像这样:
```cpp
#include <iostream>
#include <string>
std::string a;
int main() {
std::cin >> a;
std::cout << a;
return 0;
}
```
使用#include<bits/stdc++.h>阿尔法乘积C++
以下是使用#include<bits/stdc++.h>计算阿尔法乘积的C++代码:
```c++
#include<bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
int ans = 1;
while (s.size() > 1) {
ans = 1;
for (int i = 0; i < s.size(); i++) {
if (s[i] != '0') {
ans *= (s[i] - '0');
}
}
stringstream ss;
ss << ans;
ss >> s;
}
cout << s << endl;
return 0;
}
```
阅读全文