1.平行四边形构造
我认为就是计算矩形的大小 然后在数组中取最大的两个个数超过2 的数
#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
int main() {
cout << "hello, jianwen" << endl;
int n;
cin >> n;
vector<int>data(n);
vector<int>hash(1000);
int temp;
for (int i = 0;i < n;i++) {
cin >> data[i];
hash[data[i]]++;
}
sort(data.begin(), data.end());
vector<int>res;
int better = data[n - 1];
while (better > 0) {
if (hash[better] >= 2) {
res.push_back(better);
}
better--;
if (res.size() == 2) { break; }
}
int ress = res[0] * res[1];
cout << ress << endl;
return 0;
}
调试程序如上
(1)输入的时候data数组只需要N个数 如果你不想设大小 那只能用push_back
否则直接引址会导致错误 你不初始化的时候它是一个空数组vector
vector<int>data;
for(int i=0;i<n;i++){
int temp;
cin>>temp;
data.push_back(temp);
}
如果想直接cin的话就必须对数组大小进行规定(你要么规定一个大数 要么就n )(但是你定一个大数你就要注意之后要不要进行排序等操作 排序的话你大数组就会导致前面是超多的0)
vector<int>data(n);
for(int i=0;i<n;i++){
cin>>data[i];
}
所以不提倡直接定义一个大数组
哈希表不需要排序所以可以定义一个大的 毕竟你也不知道他有多少个数 最大是多少
(2) 后面的排序就是因为刚开始定义了1000个数所以很多0
2.设了大小n必须用下标 没设大小必须用push_back