답안 #7330

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
7330 2014-08-01T09:28:51 Z sinceww77 배열 탈출 (GA8_array) C++
0 / 100
648 ms 37868 KB
#include <stdio.h>
int data3[2230][2230];
struct aa
{
    int x;
    int y;
    int n;
    int cost;
}data[493728];
struct aaa
{
    int x;
    int y;
    int n;
    int cost;
    int t;
}data1[493728];
int main()
{
    /** xp:x=n  yp:y=n cnt:현재배열 cnt1:다음배열**/
    int i,j,n,nowcnt=0,x=1,y=1,cost=0,xp=0,yp=0,cnt=0,cnt1=0,nn=0;
    unsigned int min=99999999;
    scanf("%d\n",&n);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
        {
            scanf("%d ",&data3[i][j]);
        }
    }
    data[0].x=1;
    data[0].y=1;
    data[0].n=data3[1][1];
    data[0].cost=0;
    cnt=1;
    do
    {
        cnt1=0;
        for(i=0;i<cnt;i++)
        {
            if(data[i].x==n && data[i].y==n)
            {
                if(min>data[i].cost)
                    min=data[i].cost;
                continue;
            }
            if(data[i].x<n && data[i].y<n || data[i].x==n && data[i].y<n && data[i].y!=n)
            {
                if(data[i].n>data3[data[i].x][data[i].y+1])
                {
                    data1[cnt1].n=data3[data[i].x][data[i].y+1];
                    data1[cnt1].x=data[i].x;
                    data1[cnt1].y=data[i].y+1;
                    data1[cnt1].cost=data[i].cost;
                    data1[cnt1].t=0;
                    cnt1++;
                }
                else
                {
                    data1[cnt1].t=1;
                    data1[cnt1].n=data[i].n+1;
                    data1[cnt1].x=data[i].x;
                    data1[cnt1].y=data[i].y;
                    data1[cnt1].cost=data[i].cost+1;
                    cnt1++;
                }
            }
            if(data[i].x<n && data[i].y<n || data[i].y==n && data[i].x<n && data[i].x!=n)
            {
                if(data[i].n>data3[data[i].x+1][data[i].y])
                {
                    data1[cnt1].n=data3[data[i].x+1][data[i].y];
                    data1[cnt1].x=data[i].x+1;
                    data1[cnt1].y=data[i].y;
                    data1[cnt1].cost=data[i].cost;
                    data1[cnt1].t=0;
                    cnt1++;
                }
                else
                {
                    data1[cnt1].n=data[i].n+1;
                    data1[cnt1].x=data[i].x;
                    data1[cnt1].y=data[i].y;
                    data1[cnt1].cost=data[i].cost+1;
                    data1[cnt1].t=1;
                    cnt1++;
                }
            }
        }
        cnt=cnt1;
        for(i=0;i<cnt1;i++)
        {
            nn=0;
            for(j=0;j<i;j++)
            {
                if(data[i].x==data1[i].x && data[i].y==data1[i].y)
                {
                    nn=1;
                    break;
                }
            }
            if(n==1) continue;
            data[i].x=data1[i].x;
            data[i].y=data1[i].y;
            if(data1[i].t==0) data[i].n=data3[data1[i].x][data1[i].y];
            else data[i].n=data1[i].n;
            data[i].cost=data1[i].cost;
        }
        if(cnt1==0) break;
    } while(1);
    printf("%d",min);
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 37868 KB Output is correct
2 Incorrect 36 ms 37868 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 24 ms 37864 KB Program hung waiting for input
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 28 ms 37864 KB SIGSEGV Segmentation fault
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 648 ms 37864 KB SIGSEGV Segmentation fault
2 Halted 0 ms 0 KB -