#32199: NA(60%)可以幫我看一下嗎,謝謝


samchang1 (-77)

學校 : 國立臺中第一高級中學
編號 : 167336
來源 : [140.116.31.50]
最後登入時間 :
2024-09-23 15:12:19
g276. 2. 魔王迷宮 -- 2021年9月APCS | From: [111.253.150.55] | 發表日期 : 2022-09-21 00:14

前十題都AC,十題之後就開始錯了,請問我有什麼細節沒注意到嗎?

#include <iostream>

using namespace std;

int main()
{
    int n, m, k;
    cin>>n>>m>>k;

    int bomb[m][n];

    for( int i=0 ; i<m ; i++ )
    {
        for( int j=0 ; j<n ; j++ )
        {
            bomb[i][j] = 0;
        }
    }

    int king[k][5];


    for( int i=0 ; i<k ; i++ )
    {
        king[i][4] = 0;

        for( int j=0 ; j<4 ; j++ )
        {
            cin>>king[i][j];
        }
    }

    int dead = 0;


    while( dead < k )
    {
        for( int i=0 ; i<k ; i++ )//left bomb
        {
            if( king[i][4] == 0 )
            {
                bomb[ king[i][0] ][ king[i][1] ] = 1;
            }
        }

        for( int i=0 ; i<k ; i++ )//survive move
        {
            if( king[i][4] == 0 )
            {
                king[i][0] += king[i][2];
                king[i][1] += king[i][3];
            }
        }

        for( int i=0 ; i<k ; i++ )//dead
        {
            if( king[i][4] == 0 )
            {
                if(king[i][0] >= n || king[i][1] >= m || king[i][0] < 0 || king[i][1] < 0 )
                {
                    king[i][4] = 1;
                    dead++;

                }
            }
            if( king[i][4] == 0 )
            {
                if( bomb[ king[i][0] ][ king[i][1] ] >= 1 )
                {
                    bomb[ king[i][0] ][ king[i][1] ] = 2;
                    king[i][4] = 1;
                    dead++;
                }
            }
        }

        /*for( int i=0 ; i<k ; i++ )
        {
            for( int j=0 ; j<k ; j++ )
            {
                if( i != j )
                {
                    if( king[i][4] == 0 && king[j][4] == 0 )
                    {
                        if( king[i][0] == king[j][0] && king[i][1] == king[j][1] )
                        {
                            king[i][4] = 1;
                            king[j][4] = 1;
                            dead++;
                            dead++;
                        }
                    }
                }
            }
        }*/

        for( int i=0 ; i<m ; i++ )
        {
            for( int j=0 ; j<n ; j++ )
            {
                if( bomb[i][j]  == 2)
                {
                    bomb[i][j] = 0;
                }
            }
        }

    }


    int answer = 0;
    for( int i=0 ; i<m ; i++ )
    {
        for( int j=0 ; j<n ; j++ )
        {
            if( bomb[i][j] == 1 )
            {
                answer++;
            }
        }
    }

    cout<<answer;

    return 0;
}

 
#32224: Re: NA(60%)可以幫我看一下嗎,謝謝


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
g276. 2. 魔王迷宮 -- 2021年9月APCS | From: [118.160.177.110] | 發表日期 : 2022-09-23 00:24

前十題都AC,十題之後就開始錯了,請問我有什麼細節沒注意到嗎?

#include

using namespace std;

int main()
{
    int n, m, k;
    cin>>n>>m>>k;

    int bomb[m][n];

    for( int i=0 ; i    {
        for( int j=0 ; j        {
            bomb[i][j] = 0;
        }
    }

    int king[k][5];


    for( int i=0 ; i    {
        king[i][4] = 0;

        for( int j=0 ; j<4 ; j++ )
        {
            cin>>king[i][j];
        }
    }

    int dead = 0;


    while( dead < k )
    {
        for( int i=0 ; i        {
            if( king[i][4] == 0 )
            {
                bomb[ king[i][0] ][ king[i][1] ] = 1;
            }
        }

        for( int i=0 ; i        {
            if( king[i][4] == 0 )
            {
                king[i][0] += king[i][2];
                king[i][1] += king[i][3];
            }
        }

        for( int i=0 ; i        {
            if( king[i][4] == 0 )
            {
                if(king[i][0] >= n || king[i][1] >= m || king[i][0] < 0 || king[i][1] < 0 )
                {
                    king[i][4] = 1;
                    dead++;

                }
            }
            if( king[i][4] == 0 )
            {
                if( bomb[ king[i][0] ][ king[i][1] ] >= 1 )
                {
                    bomb[ king[i][0] ][ king[i][1] ] = 2;
                    king[i][4] = 1;
                    dead++;
                }
            }
        }

        /*for( int i=0 ; i        {
            for( int j=0 ; j            {
                if( i != j )
                {
                    if( king[i][4] == 0 && king[j][4] == 0 )
                    {
                        if( king[i][0] == king[j][0] && king[i][1] == king[j][1] )
                        {
                            king[i][4] = 1;
                            king[j][4] = 1;
                            dead++;
                            dead++;
                        }
                    }
                }
            }
        }*/

        for( int i=0 ; i        {
            for( int j=0 ; j            {
                if( bomb[i][j]  == 2)
                {
                    bomb[i][j] = 0;
                }
            }
        }

    }


    int answer = 0;
    for( int i=0 ; i    {
        for( int j=0 ; j        {
            if( bomb[i][j] == 1 )
            {
                answer++;
            }
        }
    }

    cout<

    return 0;
}


n和m顛倒了

 
#32231: Re: NA(60%)可以幫我看一下嗎,謝謝


samchang1 (-77)

學校 : 國立臺中第一高級中學
編號 : 167336
來源 : [140.116.31.50]
最後登入時間 :
2024-09-23 15:12:19
g276. 2. 魔王迷宮 -- 2021年9月APCS | From: [111.253.150.236] | 發表日期 : 2022-09-23 21:58

n和m顛倒了

謝謝你的幫忙,我解決問題了

 
ZeroJudge Forum