- 论坛徽章:
- 0
|
没有好的方法,写了一个穷举的
#include<stdio.h>
#define NUM 7
#define MAX 22
#define X 100
int coe[NUM];
int mask[MAX];
int compute( int start )
{
int i, j;
int sum;
int ret;
if( start > NUM )
{
sum = 0;
for( i = 0; i < NUM; i++ )
{
sum += (i+1)*coe[i];
}
if( sum == X )
{
return 0;
}
return -1;
}
for( i = 0; i < MAX; i ++ )
{
if( mask[i] )
{
continue;
}
coe[start-1] = i+1;
mask[i] = 1;
ret = compute( start+1 );
mask[i] = 0;
if( ret == 0 )
{
for( j = 0; j < NUM; j++ )
{
printf( "%d,", coe[j] );
}
printf( "\n" );
}
}
return -1;
}
int main()
{
int i;
for( i = 0; i < MAX; i++ )
{
mask[i] = 0;
}
compute( 1 );
return 0;
}
|
|
|