int max_salary(int **List, int len) {
int result_1 = 0, result_2 = 0, result = 0;
if (len <= 0)
return result;
result_1 = max_salary(List, len - 1) + *(*(List + len - 1) + 0);
result_2 = max_salary(List, len - 2) + 0 + *(*(List + len - 1) + 1);
if (result_1 >= result_2) {
result = result_1;
}
else {
result = result_2;
}
}
int main() {
#define MAXNUMLENGTH 5
#define MAXLENGTH 100
char input_num[5] = { 0 };
char input[MAXLENGTH] = { 0 };
int in_count = 0;
int count = 0;
int num_len = 0;
int len = 0;
int num_of_days = 0;
//输入第一行
char c = getchar();
while (c != '\n') {
input_num[count] = c;
c = getchar();
count++;
}
num_len = count;
count = 0;
for (int i = num_len - 1; i >= 0; i--) {
num_of_days += (int)((input_num[i] - '0')*pow(10, in_count));
in_count++;
}
in_count = 0;
//输入第二行
c = getchar();
while (c != '\n') {
input[count] = c;
c = getchar();
count++;
}
len = count;
count = 0;
//申请内存
int **salary_list = (int **)(malloc(sizeof(int*) * num_of_days));
for (int i = 0; i < num_of_days; i++) {
*(salary_list + i) = (int*)(malloc(sizeof(int) * 2));
memset(*(salary_list + i), 0, 2);
}
int first_num = 0, second_num = 0;
for (int i = num_of_days - 1; i >= 0; i--) {
count += 2;
second_num = 0;
while (input[len - count - 1] != ',') {
second_num += (int)((input[len - count - 1] - '0')*pow(10, in_count));
in_count++;
count++;
}
in_count = 0;
count++;
*(*(salary_list + i) + 1) = second_num;
first_num = 0;
while (input[len - count - 1] != '[') {
first_num += (int)((input[len - count - 1] - '0')*pow(10, in_count));
in_count++;
count++;
}
in_count = 0;
count++;
*(*(salary_list + i) + 0) = first_num;
}
/*
for (int i = 0; i < num_of_days; i++) {
for (int j = 0; j < 2; j++) {
cout << *(*(salary_list + i) + j) << endl;
}
}
*/
//int salary_list[4][2] = { {1, 5},{2, 3},{2, 9},{1, 3} };
cout << max_salary(salary_list, num_of_days) << endl;
//释放内存
for (int i = 0; i < num_of_days; i++) {
free(*(salary_list + i));
*(salary_list + i) = NULL;
}
free(salary_list);
salary_list = NULL;
return 0;
}