我正在尝试使用矢量实现解决挑战问题。但是,当我尝试将字符串存储在向量中时,我会以某种方式遇到细分错误。
此特定行引起的问题 lar.push_back(l(
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{ int t;
cin>>t;
while(t--)
{
vector <string> temp;
int n;
cin>>n;
int arr[n];
for(int i=0;i<n;i++)
cin>>arr[i];
vector <string> ar ;
//{"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
ar.push_back("abc");
ar.push_back("def");
ar.push_back("ghi");
ar.push_back("jkl");
ar.push_back("mno");
ar.push_back("pqrs");
ar.push_back("tuv");
ar.push_back("wxyz");
vector <string> lar;
int p=1;
while(p<=n)
{
if(p==1)
{
for(int i=0;i<ar[arr[n-2]-2].length();i++)
{
for(int j=0;j<ar[arr[n-1]-2].length();j++)
{
char s=ar[arr[n-2]-2][i];
char h=ar[arr[n-1]-2][j];
string l;
l.push_back(s);
l.push_back(h);
lar.push_back(l);
}
}
n=n-1;
}
else
{
for(int i=0;i<ar[arr[n-2]-2].length();i++)
{
for( int j=0;lar.size();j++)
{
char s=ar[arr[n-2]-2][i];
string t;
t.push_back(s);
string z=s+lar[j];
//t.push_back("aaa");
temp.push_back(z);
// temp.push_back(lar[j]);
}
}
lar=temp;
}
p++;
}
for(int i=0;lar.size();i++)
cout<<lar[i]<<" ";
}
return 0;
}
当我给出输入为
时1
2
2 3
输出为:AA AB AC BA BB BB BC CA CB CC(带有segmantation故障(
但是当我给出输入为
时1
3
2 3 4
未给出输出,并发生分割故障。
代码的最后一部分有一个错误:
for(int i=0;lar.size();i++)
应该是:
for(int i=0;i<lar.size();i++)
其他循环是未终止的,因此它到达了无人物的LAR区域,因此有无效的读数,结果有一个segfault。
似乎还有一个其他问题,我正在追踪。
我在其他{}部分中找到了第二期,您已经有:
string z=s+lar[j];
但是J是从上一个循环中。这条线也崩溃了。
我必须说,即使您将其更改为:
,代码也无法正常工作。string z=s+lar[i];
我怀疑该算法有一个设计缺陷。它仍然比Lennart诗人的完全drivel的代码更好。