Пример #1
0
END_TURN enter_bank(PLAYER *player) {
    
    END_TURN end_turn = YES;
    display_player_profile(player);
    display_bank_actions_menu();
    char choice = '\0';
    char *valid_choices = VALID_BANK_ACTIONS;
    
    while (!strpbrk(valid_choices, &choice)) {
        choice = getchar();
        choice = toupper(choice);
    }
    
    switch (choice) {
        case 'L':
            end_turn = take_out_loan(player);
            break;
        case 'P':
            end_turn = pay_bank(player);
            break;
        case 'I':
            end_turn = invest(player);
            break;
        case 'W':
            end_turn = withdraw_investment(player);
            break;
        case 'M':
            end_turn = NO;
            break;
    }
    
    return end_turn;
}
Пример #2
0
int invest(int rest, int num)
{
	if(rest == 0 || num == m) return 0;

	int &ret = d[rest][num];
	if(ret != -1) return ret;

	ret = invest(rest, num+1);
	for(int i=1; i<=rest; i++) {
		int tmp = invest(rest-i, num+1)+benefit[i][num];
		if(ret < tmp) {
			ret = tmp;
			result[rest][num] = i;
		}
	}
	return ret;	
}
Пример #3
0
int main()
{
	scanf("%d%d", &n, &m);

	for(int i=0; i<n; i++) {
		int cost;
		scanf("%d", &cost);
		for(int j=0; j<m; j++)
			scanf("%d", &benefit[cost][j]);
	}

	memset(d, -1, sizeof(d));
	printf("%d\n", invest(n, 0));
	trace(n, 0);
	return 0;
}