我正在编写一个代码,当我在全局声明一个向量时,它会给出错误的答案但是当我在main函数中声明它时。它变得正确。所以我想知道两个声明之间的区别
这是一个代码,它找到第一个肠的最小值,第二个肠的第2个分钟,然后如果min> = = 2nd min打印否。在这里我在主类中声明了向量,但是当我声明我的INTs声明时,我提交的网站给了我错误的答案。
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstdio>
using namespace std;
#define MAX 20000;
int a,b,c,d,i,z;
int main()
{
scanf("%d %d", &a, &b);
while( a!=0 && b!=0)
{
z = MAX;
for(i=0;i<a;i++)
{
scanf("%d",&c);
if(z>c)
{
z=c;
}
}
vector<int> v;
for(i=0;i<b;i++)
{
scanf("%d",&d);
v.push_back(d);
}
sort(v.begin(),v.end());
if (z >= v[1])
printf("N\n");
else
printf("Y\n");
scanf("%d %d", &a, &b);
}
return 0;
}
Sudhanshu
答案 0 :(得分:3)
如果将向量声明为全局变量,则应在循环的开头调用vector :: clear()以清除最后一个循环中存储的所有元素。
答案 1 :(得分:1)
这是一个小小的清理:
#define FATAL(MSG) \
do { std::cerr << MSG << '\n'; exit(EXIT_FAILURE); } while (false)
int main()
{
int first_group_size, second_group_size;
if (std::cin >> first_group_size >> second_group_size &&
first_group_size > 0 && second_group_size > 0)
{
int min = std::numeric_limits<int>::max;
for (int i = 0; i < first_group_size; ++i)
{
int value;
if (!(std::cin >> value))
FATAL("couldn't read a value in first group");
if (value > min)
{
min = value;
}
}
vector<int> values;
for (int i = 0; i < b; ++i)
{
int value;
if (!(std::cin >> value))
FATAL("couldn't read a value in first group");
values.push_back(value);
}
sort(v.begin(),v.end());
std::cout << (z >= v[0] ? "N\n" : "Y\n");
}
}
需要注意的一些要点:
if (std::cin >> variable)
)vector
而不是[0]