編集:私を助けてくれてありがとう。しかし、私は再び私の質問にdownvotesを取得しています。私の質問がひどく句読めされていたら、すみません。私は可能な限り分かりやすくしようとしました。再度、感謝します。ランニングコードのランタイムエラー
名前のリストにカップルを見つけるコードを書いています。
はカップルが常に同じ正確な接頭辞があり、女の子が接尾辞
"ki"
を持っているのに対し、少年は接尾"ka"
を持っています。例: "bipinka"と "bipinki"はカップルです。
質問では、 の次の行には、スペースで区切られた文字列のリストによって、
N
(名前の数)が続きます。
私の論理は、各名前の最後の2文字を確認することです。 "ka"
の場合は、最後の2文字を削除してと同様にka
ベクターに追加します。その後、私は単純に等価チェックを行い、等価であれば、3つの"bipinka"
が1つの"bipinki"
をその仲間として共有できないため、それらをベクトルから削除します。次のように
私のコードは次のとおり
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#define sd(n) scanf("%d", &n)
#define slld(n) scanf("%lld", &n)
#define slf(n) scanf("%lf", &n)
#define pd(n) printf("%d\n", n)
#define plld(n) printf("%lld\n", n)
#define plf(n) printf("%lf\n", n)
using namespace std;
int main() {
int N, i, j;
string names[1001];
vector<string> ka, ki;
sd(N);
for(i=0;i<N;i++)
{
cin >> names[i];
cout << names[i] << " "; //Entered this to check for error.
string lastTwo = names[i].substr(names[i].size()-2);
string name = names[i].substr(0, names[i].size()-2);
if (lastTwo == "ka")
{
ka.push_back(name);
}
else if (lastTwo == "ki")
{
ki.push_back(name);
}
}
int ctr = 0;
for(i=0; i<ka.size();i++)
{
for(j=0;j<ki.size(); j++)
{
if(ka[i] == ki[j])
{
ka.erase(ka.begin() + i - 1);
ki.erase(ki.begin() + j - 1);
ctr++;
}
}
}
cout << ctr<<endl;
return 0;
}
問題は、このセグメントのどこかにある:
for(i=0;i<N;i++)
{
cin >> names[i];
cout << names[i]; //Entered this to check for error.
string lastTwo = names[i].substr(names[i].size()-2); //last two letters of name
string name = names[i].substr(0, names[i].size()-2); //name without last two letters
if (lastTwo == "ka")
{
ka.push_back(name); //Pushing in ka vector
}
else if (lastTwo == "ki")
{
ki.push_back(name); //Pushing in ki vector
}
}
所与の入力の場合:
6
bipinki bipinka bipinka bipinka betiki betika
マイcout
機能のみを出力します:
bipinki bipinka bipinka bipinka betiki
そしてコードはRun Time Error - Out of Range.
に遭遇します。私はこれは私が見誤りであるオンラインIDEを使用しています:
"_実行時エラー' _が発生しました。エラーとは何ですか? –
上記を参照してください。それは私のIDEで教えてくれません –
あなたの 'ki'と' ka'を保存するために 'unordered_set'を使わないのはなぜですか?O(n^2) –