不会用向量 大家帮帮忙 谢谢啦

C++语言 码拜 8年前 (2017-04-19) 1034次浏览
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> a(1, 1);
a.push_back(0);
int k;
for (int n =1; n <=100; n++)
{
k = n;
for (k; k > 0; k–)
{
for (int m = a.size(); m>0; m–)
{
a[m] *= 2;
if (a[m] >= 10)
{
a.push_back(0);
a[m] -= 10;
a[m + 1] += 1;
}
}
}
}
int i, x;
for (i=a.size();i>=0;i++)
cout << a[i] << ” “;
cin >> x;
return 0;
}
解决方案

10

你单步一下就知道问题了。
你的a.size是2,也就是说你的m也是2
那么你执行a[m] *= 2;自然就 out of range了,a[0]和a[1]才是范围内的

5

for (i=a.size();i>=0;i++)
========================
改为:
for (i=a.size();i>=0;i–)

20

a 有效索引是 0 – a.size()-1
所以 for (int m = a.size(); m>0; m–) 越界了
改成:
for (int m = a.size() – 1; m>0; m–)

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明不会用向量 大家帮帮忙 谢谢啦
喜欢 (0)
[1034331897@qq.com]
分享 (0)