# n/kloc 정의-0/0//10 개 데이터
# M 5 // 5 그룹 정의
Int limit[N][N]=
{
{1, n}, /0 제한1;
{3,5,6,n}, // 1 한계 3,5,6;
{0, 1, 6,7,n}, //2 한계 0, 1, 6,7;
{1, 2, N}, //3 한계 1, 2;
{N},//
{1, 2, N}, //5 제한 1, 2;
{2,n}, //6 한계 2;
{8,9,n}, //7 제한 8,9;
{5,6,7,n}, //8 제한 5,6,7;
{2,8,n}//9 제한 2,8.
}
//m 이 n 을 제한하는지 여부를 결정합니다.
Bool m_limit_n(int m, int n)
{
Int I;;
다음 경우 (m>= N | | n & gt=N)
{
False 를 반환합니다
}
For(I = 0;; 나<N & amp& amp 한계 [m] [I] < N; I++)
{
If(limit[m][i]==n)
{
True 를 반환합니다
}
}
False 를 반환합니다
}
부울 값이 유효합니다 (int *arr)
{
Int I, j;
For(I = 0;; 나 & ltn;; I=i+2)
{
If (arr [I] > Arr[i+ 1])
{
False 를 반환합니다
}
If(m_limit_n(arr[i], arr[(i+2)%N])
||m_limit_n(arr[i], arr[(i+3)%N])
||m_limit_n(arr[i+ 1], arr[(i+2)%N])
||m_limit_n(arr[i+ 1], arr[(i+3)%N])
{
False 를 반환합니다
}
}
True 를 반환합니다
}
Void exchange(int *arr, int n, int m)
{
내부 온도
Temp = arr [n];
Arr [n] = arr [m];
Arr [m] = temp;
}
Int a[]={0, 1, 2,3,4,5,6,7,8,9};
Void perm(int* arr, int n, int curr)
{
Int I;;
If(curr & gt;; =n- 1)
{
If (유효 (arr))
{
For(I = 0;; 나 & ltn;; I=i+2)
{
Printf("%d, %d ",arr[i], arr [I+1]);
}
Printf ("\ b \ n");
}
}
기타
{
For(I = curr;; 나 & ltn;; I=i+ 1)
{
If(i==curr)
{
Perm(arr, n, curr+1);
}
기타
{
익스체인지 (arr, I, curr) :
Perm(arr, n, curr+1);
익스체인지 (arr, I, curr) :
}
}
}
}
Int main ()
{
Perm(a, sizeof(a)/sizeof(a[0]), 0);
0 을 반환합니다
}
"제약은 실제 상황에 따라 결정되므로 프로그램에서 사용자가 제약 조건을 입력할 수 있도록 프롬프트를 요청합니다." 아주 간단합니다. 직접 하세요.