我家电脑说程序停止工作,大佬求助!

P1618 三连击(升级版)

13539173797zc @ 2024-11-10 16:08:49

我快疯掉了,电脑也罢工,大佬改改,AC必关!

#include<iostream>
#include<cmath>
using namespace std;
int a[900],b[900],c[900],ai,bi,ci;
int main(){
    int A,B,C;
    cin>>A>>B>>C;
    for(int i=123;i<=987;i++){
        for(int j=123;j<=987;j++){
            for(int k=123;k<=987;k++){
                if(i/j==A/B&&i/k==A/C&&j/k==B/C){
                    for(int o=1;o<=3;o++){
                        int ii=i%10;
                        i/=10;
                        for(int p=1;p<=3;p++){
                            int jj=j%10;
                            j/=10;
                            for(int l=1;l<=3;l++){
                                int kk=k%10;
                                k/=10;
                                if(!(ii==jj&&ii==kk&&jj==kk)){
                                    a[ai]=i;
                                    b[bi]=j;
                                    c[ci]=k;
                                    ai++;
                                    bi++;
                                    ci++;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    for(int i=0;i<ai;i++){
        int mi=min(a[i],b[i]);
        mi=min(mi,c[i]);
        cout<<mi<<" ";
        if(mi==a[i]){
            mi=min(b[i],c[i]);
            cout<<mi<<" ";
            if(mi==b[i]) cout<<c[i];
            else cout<<b[i];
        }else if(mi==b[i]){
            mi=min(a[i],c[i]);
            cout<<mi<<" ";
            if(mi==a[i]) cout<<c[i];
            else cout<<a[i];
        }
        else{
            mi=min(a[i],b[i]);
            cout<<mi<<" ";
            if(mi==a[i]) cout<<b[i];
            else cout<<a[i];
        }
    }
    return 0;
}

by KarmaticEnding @ 2024-11-10 16:23:33

六重循环,不炸都难,判为病毒,一命芜湖

这个实在是调不了,原因是会TLE

你第四五六重循环 i,j,k 的值修改之后没有还原,导致最后 j 可能是 0,但是 j 在后面的判断中又作了除数,所以导致了错误

@13539173797zc


by I_LOVE_MATH @ 2024-11-10 16:27:25

@13539173797zc 你电脑应该没问题,你的这种现象在于你使用了win7系统,所以在程序RE时会有弹窗


by I_LOVE_MATH @ 2024-11-10 16:30:25

RE叫做运行时错误,当除以0或者数组越界时会出现,像你这个RE的原因是除以0了,因为你在除以10后i为零,导致i/j时程序错误 你可以在代码中输出中间值来调试,发现错误


by I_LOVE_MATH @ 2024-11-10 16:32:30

我十分建议你重写,因为你的这个做法太长了又匪夷所思,代码复杂度高,时空复杂度也高到爆炸,建议看题解理解一下
祝你学习进步


by 13539173797zc @ 2024-11-10 17:59:20

@I_LOVE_MATH
十分感谢!!
最起码让我没在错误的道路上越走越远


by 13539173797zc @ 2024-11-10 18:00:39

@light_dream
感谢!!!
已关^_^


by 13539173797zc @ 2024-11-10 18:01:22

@I_LOVE_MATH
已关^_^


|