我不能退出for循环的原因是什么?

时间:2021-05-10 12:56:09

标签: c++ for-loop

伙计们。 这是我在 stackoverflow 中的第一个问题。 这段代码是用于程序求解的代码,问题是要求找到其中没有相邻冗余序列的最小序列。输入是序列的长度,序列应该只有 1、2、3。 例如,如果我输入 7,则输出应为 1213121。 现在,我真正的问题是关于 for 循环。

#include <bits/stdc++.h>

using namespace std;

int mini = 0xffffff;
int n;
string s1, s2;

bool isgood(string s)
{
    for(int i=1;i<=s.size()/2;i++)
    {
        s1 = "";
        s2 = "";
        for(int j=s.size()-1;j>=s.size()-i;j--)
        {
            s1 += s[j];
        } //this works ok
        for(int k=s.size()-1-i;k>=s.size()-i-i;k--)//Problem
        {
            cout<<"*** "<<k<<endl; //I printed the k, and it printed 0, -1, -2, -3......, and it didn't go out.
            s2 += s[k];
        }
        if(s1.compare(s2)==0)
        {
            return false;
        }
    }
    return true;
}

void f(string s)
{
    if(s.size()==n)
    {
        if(mini>stoi(s))
        {
            mini=stoi(s);
        }
        return;
    }
    else
    {
        for(int r=1;r<=3;r++)
        {
            if(isgood(s+char(r+'0'))==true)
            {
                f(s+char(r+'0'));
            }
        }
    }
}

int main()
{
    scanf("%d", &n);
    f("1");
    printf("%d", mini);
}

正如你在我的代码中看到的,有一个 for,但它没有消失。 当我将其更改为 for(int k=s.size()-1-i;k>s.size()-ii-1;k--) 时,它并没有达到确切的目标,但程序有效. 请帮我看看是什么问题,我该如何解决。

0 个答案:

没有答案
相关问题