宿題手伝います
■ このスレッドは過去ログ倉庫に格納されています
0301デフォルトの名無しさん
NGNGこれでいい?>すべての組み合わせを試す方法
#include <stdio.h>
#define LIMIT 121
#define N_STUFF (sizeof(stuff)/sizeof(stuff[0]))
static struct Stuff {
char c;
int weigh;
int value;
} stuff[] = {
{ 'a', 39, 42 }, { 'b', 13, 12 }, { 'c', 68, 45 }, { 'd', 15, 5 }, { 'e', 10, 2 },
{ 'f', 20, 61 }, { 'g', 31, 89 }, { 'h', 15, 32 }, { 'i', 41, 47 }, { 'j', 16, 18 }
};
static int total_value[1 << N_STUFF];
int main(void) {
int i, max_value = -1;
for ( i = 0; i < (1 << N_STUFF); i++ ) {
int j, total_weigh = 0;
for ( j = 0; j < (int)N_STUFF; j++ ) {
if ( i & (1 << j) ) {
total_weigh += stuff[j].weigh;
total_value[i] += stuff[j].value;
}
}
if ( total_weigh > LIMIT )
total_value[i] = -1;
if ( total_value[i] > max_value )
max_value = total_value[i];
}
for ( i = 0; i < (1 << N_STUFF); i++ ) {
if ( total_value[i] == max_value ) {
int j;
printf( "Choise:" );
for ( j = 0; j < (int)N_STUFF; j++ )
if ( i & (1 << j) )
printf( " %c", stuff[j].c );
printf( "\ttotal value: %d\n", total_value[i] );
}
}
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています