急!用C语言实现一个小程序
#定义N 10 //十个数据
#定义M 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 & gt= N | | n & gt=N)
{
返回false
}
for(I = 0;我& ltN & amp& amp极限[m][I]& lt;n;i++)
{
if(limit[m][i]==n)
{
返回true
}
}
返回false
}
布尔值有效(int *arr)
{
int i,j;
for(I = 0;我& ltn;i=i+2)
{
if(arr[I]& gt;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);
}
其他
{
exchange(arr,I,curr);
perm(arr,n,curr+1);
exchange(arr,I,curr);
}
}
}
}
int main()
{
perm(a,sizeof(a)/sizeof(a[0]),0);
返回0;
}
“约束条件是根据实际情况确定的,所以要求程序给出提示,让用户输入约束条件。”很简单,自己做吧。