gpt4 book ai didi

c++ - 找到隐藏的无限循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:31:51 26 4
gpt4 key购买 nike

我正在研究 this problem我的解决方案似乎适用于我可以想象尝试的每一种情况,并且在 3 秒的时间限制内完成,但是当我在线提交时它仍然超过 3 秒。我认为一定有一种情况导致这个while循环无限期地进行下去:

while (!equals(availableChars, testChars)){
next = getNextAlphaString(high, next, availableChars, it);
fillCharSet(next, testChars);
}

但是我已经测试了很多我的功能,但我无法弄清楚它是什么......希望你们能看到一些东西。以下是辅助函数:

bool equals(multiset<char>& availableChars, multiset<char>& test){  
multiset<char>::iterator it;
for (it = availableChars.begin(); it != availableChars.end(); it++){
if ((int)availableChars.count(*it) != (int)test.count(*it)) return false;
}
return true;
}

*

string getNextAlphaString(char& high, string next, multiset<char>& availableChars, multiset<char>::iterator& it){   
for (int i=next.size()-1; i>=0; i--){

if (next[i] != high){
it = availableChars.find(next[i]);
while(*it == next[i]){
it++;
if (it == availableChars.end()){it = availableChars.begin(); break;}
}
next[i] = *it;
break;}
else{
it = availableChars.begin();
next[i] = *it;
}
}
return next;
}

*

void fillCharSet(string in, multiset<char>& chars){
chars.clear();
for (int i=0; i<in.size(); i++){chars.insert(in[i]);}
}

最佳答案

这是一篇使用 GDB 检测无限循环的文章:

http://www.unknownroad.com/rtfm/gdbtut/gdbinfloop.html

希望这能帮助您解决问题。

关于c++ - 找到隐藏的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11148595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com