순열 숙제좀 도와주세용 ㅠ
개럭시
숙제를 해야되는데 잘 모르겠어요 ㅠㅠ 도와주세요 ㅠ
질문 내용 :
숙제가 숫자를 입력해서 그 숫자를
순열로 나타내는건데요
물론 중복은 없어야되고요 도와주세용 ㅠㅠ이건 아는형이 쓴거
봐도 잘 이해가 안되더라고요 ㅠ
#include stdio.h
int n,i,j;
int array[6];
int available[6];
int arranged[6];
int lottery[6];
void numbertoshuzu(int va)
{
if(va1000000 && va=100000)
{ lottery[0]=va/100000;
lottery[1]=va%100000/10000;
lottery[2]=va%10000/1000;
lottery[3]=va%1000/100;
lottery[4]=va%100/10;
lottery[5]=va%10;
n=6;
}
else if(va100000 && va=10000)
{ lottery[0]=va/10000;
lottery[1]=va%10000/1000;
lottery[2]=va%1000/100;
lottery[3]=va%100/10;
lottery[4]=va%10;
n=5;
}
else if(va10000 && va=1000)
{ lottery[0]=va/1000;
lottery[1]=va%1000/100;
lottery[2]=va%100/10;
lottery[3]=va%10;
n=4;
}
else if(va1000 && va=100)
{ lottery[0]=va/100;
lottery[1]=va%100/10;
lottery[2]=va%10;
n=3;
}
else if(va100 && va=10)
{ lottery[0]=va/10;
lottery[1]=va%10;
n=2;
}
else lottery[0]=va;
}
void bigtosmall(int array[])
{ int temp;
for(i=0;in;i++)
for(j=0;jn;j++)
if(array[i]array[j])
{ temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
int power(int vn)
{ int p;
p=1;
for(i=0;ivn;i++)
p=p*10;
return p;
}
void repetitionfilter(int array[])
{
for(i=0;in;i++)
available[i]=1;
for(i=0;in;i++)
for(j=i+1;jn;j++)
if(array[i]==array[j])
{ available[i]=available[i]+available[j];
available[j]--;
}
}
void arrange(int l)
{ int i;
if (l==n)
{
for (i=0;in;i++)
printf(%d,arranged[i]);
printf(\n);
return;
}
for (i=0;in;i++)
if (available[i]0)
{
available[i]--;
arranged[l]=array[i];
arrange(l+1);
available[i]++;
}
}
int main()
{ int a;
scanf(%d,&a);
numbertoshuzu(a);
for(j=0;jn;j++)
{
array[j]=a/power(n-1-j);
a=a%power(n-1-j);
}
bigtosmall(array);
repetitionfilter(array);
arrange(0);
return 0;
}
-
떠나간그녀
아는 형한테 질문을 하는 것이 가장 좋다고 생각합니다.
-
탄성
숫자를 입력해서 그 숫자를 작은것부터 큰 순서로 나타내는거에요 중복 없이요
-
바닐라
하고자 하는 것이 정확히 뭔가요?