프로그래밍

 3198, 1/160 회원가입  로그인  
   bys503
   프로그래밍 질문

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2854 [복사]


문제 링크는 아래에 있습니다.
http://www.nia.or.kr/koi/F04000000000/F04040000000Q.asp?intExBaSEQ=43&strExBaPart=20&strExBaGrad=20&strExBaYear=2000&ExPmSEQ=384

#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#define randomize() srand((unsigned)time(NULL))
#define random(n) (rand()%(n))

일단 제가 프로그래밍 해 놓은 코드를 밑에 적어 봅니다. 그런데 결과가 제가 원하는 대로 나오지 않아서 말이죠.
어디가 잘못된 부분인지 알려 주시면 감사하겠습니다.
void main()
{
        FILE *in=fopen("input.txt","r");
        FILE *out=fopen("output.txt","w");
        
        int howmany_number,number_final,room[100],l,i,n,func_number[100],k,count,pure[100];
        number_final=0;
        howmany_number=0;

        fscanf(in,"%d",&howmany_number);
        fscanf(in,"%d",&number_final);
        for(i=1;i<=howmany_number;i++)
        {
                pure[i]=0;
                room[i]=0;
                func_number[i]=0;
                fscanf(in,"%d",&pure[i]);
        }


        randomize();
        k=howmany_number;
        l=0;
        l++;

        for(i=1;i<=howmany_number;i++)
        {
                room[i]=pure[i];
        }

        count=0;
        while(1)
        {
                n=random(k);
                if(n==0) n++;
                func_number[l]=n;

                if(room[n]>=room[n+1]) room[n]=room[n]-room[n+1];
                else room[n]=room[n+1]-room[n];
                room[n+1]=0;

                if(n+1!=k)
                {
                for(i=n+1;i<k;i++)
                {
                        room[i]=room[i+1];
                }
                }

                k--;
                l++;
                if(k==1)
                {
                        if(room[1]==number_final) break;
                        else
                        {
                                k=howmany_number;
                                l=1;
                                for(i=1;i<=howmany_number;i++)
                                {
                                        func_number[i]=0;
                                        room[i]=pure[i];
                                }

                        }
                }
                count++;
                if(count>=100)
                {
                        fprintf(out,"%d",0);
                        break;
                }
        }

        if(count<100)
        {
        for(i=1;i<howmany_number;i++)
        {
                fprintf(out,"%d",func_number[i]);
        }
        }

        fclose(in);
        fclose(out);
}


  Hit : 4576     Date : 2011/01/17 12:33