'랭포드 문제'에 해당되는 글 1건

  1. 2008.11.03 랭포드 문제
카테고리 없음2008. 11. 3. 15:24
#include<stdio.h>

void rolen(int *num, int n);
int same(int *num, int n);
void insrt(int *num, int n);

int main(void)
{
int i,j;
int n;

for(n=1; n<=20; n++)
{
int *num;

num = (int *)malloc(sizeof(int) * n);

rolen(num, n);

insrt(num, n);

free(num);

}

return 0;
}

void rolen(int *num, int n)
{
int i,j;

for(i=0; i<n; i++)
num[i]=0;

i=n-1;
while(num[0]==n)
{
num[n-1]++;
for(j=i; j>0; j--)
{
if(num[j]==n)
{
num[j]==0;
num[j-1]++;
}
}

if(same(num, n))
insrt(num, n);

}

}

int same(int *num, int n)
{
int l,m;
int k, disi=0;

for(l=0; l<n; l++)
{
m=num[l];

for(k=0; k<n; k++)
{
if( (k!=l && m==num[k]) || num[k]==0)
disi++;
}
}

if(disi==0)
return 1;
else
return 0;

}

void insrt(int *num, int n)
{
int i;
for(i=0; i<n; i++)
printf("%d", num[i]);

printf("\n");
}

아놔...
랭포드문제를 풀어볼려고 했는데..
단지 1~n까지의 수를 중복되지않게 배열시키는 
부분에서 부터 완전히 좌절해 버렸다..
누군가가 성공한다면 꼭 알려주시길..
더이상은 시간낭비인거같고... 할것도 많은데..ㅠ_ㅠ
Posted by blindfish