#28420: 請問大家我這樣的寫法如何修改?


ic231542211 (willie)

學校 : 不指定學校
編號 : 44051
來源 : [123.194.107.200]
最後登入時間 :
2022-09-15 15:14:37
e514. 01594 - Ducci Sequence -- UVA | From: [140.124.249.31] | 發表日期 : 2021-12-09 12:39

#include<stdio.h>

#include<math.h>

#include<string.h>

int main(){

    int test, n, num[16];

    scanf("%d", &test);

    for(int i = 0; i < test; i++){

        int count = 0;

        int flag = 0;

        memset(num, -1, sizeof(num));//初始化

        scanf("%d", &n);

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

            scanf("%d", &num[i]);

        }

        for(int j = 0; j < 1000; j++){//進行1000次迭代 

            count = 0;

            for(int k = 0; k < n; k++){

                if(k == n - 1){//陣列位置的最後一位 

                    num[k] = abs(num[0] - num[k]);

                }

                else{

                    num[k] = abs(num[k] - num[k + 1]);

                }

                 //找尋陣列內值為0的位置

                for(int l = 0; l < n; l++){

                    if(num[l] == 0){

                        count++;

                    }

                }

                if(count == n){//表示陣列內的值全部皆為0 

                    printf("ZERO\n");

                    flag = 1;

                    break;

                }

            }

            if(flag == 0){

                printf("LOOP\n");

                break;

            }

        }

    }

}

請問為什麼會一直重複印出多餘的答案?

 
#28435: Re:請問大家我這樣的寫法如何修改?


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
e514. 01594 - Ducci Sequence -- UVA | From: [39.9.229.175] | 發表日期 : 2021-12-09 22:08

                if(count == n){//表示陣列內的值全部皆為0 

                    printf("ZERO\n");

                    flag = 1;

                    break;

                }


請問為什麼會一直重複印出多餘的答案?


因為break只會跳出最內層的迴圈

 
ZeroJudge Forum