C++ c++;中断语句不工作

C++ c++;中断语句不工作,c++,C++,我对这一点很陌生,我会尽量用图片等让这篇文章尽可能简单 我目前正在解决Kattis上的编程问题 在我的上一篇文章中,这个好人为我编辑了它,使它看起来很漂亮,它显示了编程问题的图片,但它似乎只让我显示了一个链接 我首先用java解决了这个问题,虽然我得到了正确的答案,但由于超过了时间限制,它无法被接受 < C++ > C++ C++,我把代码从java复制到C++,看起来C++中的中断语句的行为与java不同。p> 这是我的C++代码,当我找到答案时,需要循环完全中断,但是它一直在寻找更多答案。

我对这一点很陌生,我会尽量用图片等让这篇文章尽可能简单

我目前正在解决Kattis上的编程问题

在我的上一篇文章中,这个好人为我编辑了它,使它看起来很漂亮,它显示了编程问题的图片,但它似乎只让我显示了一个链接

我首先用java解决了这个问题,虽然我得到了正确的答案,但由于超过了时间限制,它无法被接受

< C++ > C++ C++,我把代码从java复制到C++,看起来C++中的中断语句的行为与java不同。p>

这是我的C++代码,当我找到答案时,需要循环完全中断,但是它一直在寻找更多答案。在爪哇,循环很完美,有人知道为什么它不能在C++中工作吗?

#include <iostream>
using namespace std;

int main() {

    int cases;

    cin >> cases;

    for (int i = 0; i < cases; i++)
    {
        int n;
        cin >> n;

        int sum = 0;
        int digits = n;

        while (digits > 0)
        {
            sum += digits % 10;
            digits = digits / 10;
        }

        for (int j = n - 1; j >= 0; j--)
        {
            int sum2 = 0;
            int digits2 = j;

            while (digits2 > 0)
            {
                sum2 += digits2 % 10;
                digits2 /= 10;
            }

            if(sum-1 == sum2)
            {
                cout << j << " " << endl;
                break;
            }
        }
    }
    return 0;
}
#包括
使用名称空间std;
int main(){
int案例;
cin>>病例;
对于(int i=0;i>n;
整数和=0;
整数位数=n;
while(数字>0)
{
总和+=位数%10;
位数=位数/10;
}
对于(int j=n-1;j>=0;j--)
{
int-sum2=0;
int digits2=j;
而(数字2>0)
{
sum2+=数字2%10;
数字2/=10;
}
if(sum-1==sum2)
{

coutAFAICT,您的代码工作得很好,至少在
break
语句方面是这样。我稍微修改了它,以打印出更多的信息(在遇到麻烦时这不是一个坏主意),现在它看起来是这样的:

#include <iostream>
using namespace std;

int main() {

    int cases;

    cin >> cases;

    for (int i = 0; i < cases; i++)
    {
        int n;
        cin >> n;

        int sum = 0;
        int digits = n;

        while (digits > 0)
        {
            sum += digits % 10;
            digits = digits / 10;
        }

        cout << "sum=" << sum << "\n";

        for (int j = n - 1; j >= 0; j--)
        {
            int sum2 = 0;
            int digits2 = j;

            while (digits2 > 0)
            {
                sum2 += digits2 % 10;
                digits2 /= 10;
            }

            if(sum-1 == sum2)
            {
                cout << "j=" << j << " " << endl;
                break;
            }
        }
    }
    return 0;
}
它产生:

sum=15
j=12344 
sum=30
j=6788 
这就是你所期待的吗

-您可以在那里试验代码。另请参阅:


此外,还要计算出
sum_digits()

您希望哪个循环打破“i”和“j”循环,还是两者都打破?我认为,它只打破了“j”循环。在线判断网站通常会超过时间限制,这意味着您的算法效率不够。请大胆思考O@vcloarec对不起,我应该说,我想打破j循环。@drescherjm是的,如果我想u,我需要一个更好的算法SE java,这就是我改为C++的原因。也许条件(SUM-1== SUM2)是不正确的…谢谢你的回复,是的,但是它不适合我,它打印出多个“j= xxxx”。.你知道为什么break语句不起作用吗?@Eric不,我不知道。你确定你运行的代码与发布的代码完全一致吗?你知道为什么break语句不起作用吗?我也不知道它是怎么起作用的。@drescherjm,是的,我知道了。谢谢你的帮助,我如何在这方面给人们打分>我不确定如何使用它。
sum=15
j=12344 
sum=30
j=6788