删除矢量显示代码 c++ 段时答案更改



解决代码强制问题

我已经编写了这个c ++代码,在显示结果时遇到了一个大问题:实际上,如果我添加此代码:

cout<<"t2simplifier"<<endl;
aff(t2simplifier);
cout<<endl;
aff(t2primsimplifier);
cout<<endl;

结果将是正确的 否则就错了 代码:

#include <bits/stdc++.h>
using namespace std;
void aff (vector<int> v)
{
for (int i=0;i<v.size();i++)
cout<<v[i]<<"|";
}
int main()
{
int n;
cin>>n;
int t1[2][n];
vector <int> t2 ;
vector <int> t2prim ;//flous
vector <int> t2simplifier ;
vector <int> t2primsimplifier  ;//flous

vector <int> t3prim ;//flous

for(int i=0;i<n;i++)
cin>>t1[0][i];
for(int i=0;i<n;i++)
cin>>t1[1][i];
for (int i = 0;i<n;i++)
for (int j = i+1 ;j<n ;j++)
{
if(t1[0][i]<t1[0][j])
{
t2.push_back(j);
t2prim.push_back(t1[1][i]+t1[1][j]);
}
}
//    cout<<"t2"<<endl;
//    aff(t2);
//    cout<<endl;
//    aff(t2prim);
//    cout<<endl;


//pour simplifier t2  et t2prim
int minn;
for (int i = 1;i<n;i++)
{
minn==1000000000;
for (int j = 0 ;j<n ;j++)
{
if((t2[j]==i)&&(t2prim[j]<minn))
{
minn=t2prim[j];
}
}
t2simplifier.push_back(i);
t2primsimplifier.push_back(minn);
}

cout<<"t2simplifier"<<endl;
aff(t2simplifier);
cout<<endl;
aff(t2primsimplifier);
cout<<endl;

for (int i = 0;i<t2simplifier.size();i++)
for (int j = t2simplifier[i] ;j<n ;j++)
{
if(t1[0][t2simplifier[i]]<t1[0][j])
{
t3prim.push_back(t2primsimplifier[i]+t1[1][j]);
}
}
//  cout<<"t3prim";
// aff(t3prim);
if (t3prim.size()==0)
cout<<-1;
else
{
//talla3 min
int k = t3prim[0];
for (int i = 1;i<t3prim.size();i++)
{
if(k>t3prim[i])
k=t3prim[i];
}
// k is the result
cout << k ;
}
return 0;
}

输入:

5
2 4 5 4 10
40 30 20 10 40

部分代码的结果是:

t2simplifier
1|2|3|4|
70|50|50|50|
90

但是当我们删除这段代码(矢量显示(时 结果将是错误的:

24

感谢"弗朗索瓦·安德里厄先生"

代码中存在键入错误

minn == 1000000000;行正在执行比较,应该minn = 1000000000;

此错误会导致从未初始化的变量读取时出现未定义的行为。

最新更新