宿題手伝います
■ このスレッドは過去ログ倉庫に格納されています
0389デフォルトの名無しさん
NGNG#include <stdio.h>
#define LIMIT 121
#define NUMBER 10
struct nimotu {
char name;
int weight;
int value;
} nimotu[] = {
{ '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 }
};
int total_value[1 << NUMBER]; /*[]の中身は?*/
int main(void) {
int i, max_value = -1; /*なんで−1なのでしょう?*/
for ( i = 0; i < (1 << NUMBER); i++ ) { /*ここの<<の部分*/
int j, total_weight = 0;
for ( j = 0; j < NUMBER; j++ ) {
if ( i & (1 << j) ) { /*ここの<<の部分*/
total_weight += mimotu[j].weight;
total_value[i] += nimotu[j].value;
}
}
if ( total_weight > LIMIT )
total_value[i] = -1;
if ( total_value[i] > max_value )
max_value = total_value[i];
}
for ( i = 0; i < (1 << NUMBER); i++ ) { /*ここの<<*/
if ( total_value[i] == max_value ) {
int j;
printf( "Choise:" );
for ( j = 0; j < (int)NUMBER; j++ )
if ( i & (1 << j) )
printf( " %c", nimotu[j].c );
printf( "total value: %d\n", total_value[i] );
}
}
return 0;
}
疑問のところ特によろしくお願いします・・・
■ このスレッドは過去ログ倉庫に格納されています