这两段代码就int mx;一个定义在main外,一个在main里,why?有什么不同吗?为什么第一段代码是对的,第二段代码会出现有案例错误,搞不懂
#include<bits/stdc++.h>
using namespace std;
const int N = 2e3 + 9;
int mx;
int main()
{
int k,n;
int v[N], w[N];
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin >> n >> k;
for(int i = 1; i <= n; i++)
cin >> v[i] >> w[i];
for(int s=2000;s>=0;s--)
{
int weight=(1<<20)-1;
for(int i=1;i<=n;i++)
{
if((s&w[i])==s)
{
weight=weight&v[i];
}
}
if(weight<=k)
{
mx=s;
break;
}
}
cout<<mx;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int N = 2e3 + 9;
int main()
{
int k,n,mx;
int v[N], w[N];
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin >> n >> k;
for(int i = 1; i <= n; i++)
cin >> v[i] >> w[i];
for(int s=2000;s>=0;s--)
{
int weight=(1<<20)-1;
for(int i=1;i<=n;i++)
{
if((s&w[i])==s)
{
weight=weight&v[i];
}
}
if(weight<=k)
{
mx=s;
break;
}
}
cout<<mx;
return 0;
}
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/f963a09415b34da38fdc3b7f68eef62a.png "#left")
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/d1c84cc6a1e14ab5b80b4c01159f1782.png "#left")