-5
我無法解決這個問題,嘗試了很多,但邏輯不起作用。 問題是, 我必須計算2 x N矩陣的所有可能的組合。 條件:如何獲得2xn矩陣的所有可能的組合
- 所有元素的總和必須N.在一排
- 元件或一列必須是在非增加的方式。
- 所有元素必須是正數和實數。 列印所有可能的組合。 讓6,是29 謝謝。
我無法解決這個問題,嘗試了很多,但邏輯不起作用。 問題是, 我必須計算2 x N矩陣的所有可能的組合。 條件:如何獲得2xn矩陣的所有可能的組合
這個問題已經被問,
可以使用回溯來解決它 這裏的代碼,
#include<conio.h>
#include<stdio.h>
int a[2][100],c,sum,num;
int ch;
int check(int x,int y)
{
int i=1;
if(x==1&&a[x][y]>a[0][y])
i=0;
if(y>0&&a[x][y]>a[x][y-1])
i=0;
return i;
}
void print()
{
int i,j;
printf("\n");
for(i=0;i<2;i++)
{
for(j=0;j<num;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
void fun(int lim,int x,int y)
{
int i;
if(y<num)
for(i=lim;i>0;i--)
{
a[x][y]=i;
if(check(x,y))
{
sum+=a[x][y];
if(sum==num)
{
print();
sum-=a[x][y];
a[x][y]=0;
c++;
}
else
{
fun(num-sum,(x+1)%2,y+(x+1)/2);
a[(x+1)%2][y+(x+1)/2]=0;
fun(num-sum,(x+2)%2,y+(x+2)/2);
a[(x+2)%2][y+(x+2)/2]=0;
}
sum-=a[x][y];
}
}
}
int main()
{
scanf("%d",&num);//num=6
fun(num,0,0);
printf("%d",c);
return 0;
}
請分享你嘗試過什麼到目前爲止 –