初步测试以下递归算法可行: int score(int **a, int n, int m) { if (n < 0) { return 0; } if (m<0 || m>2) { return -INF; } int res = 0; int *s = new int[3]; for (int i = 0; i < 3; i++) { if (a[n][m] == 0) { s[i] = -score(a, n - 1, m + i - 1); } else { s[i] = a[n][m] + score(a, n - 1, m + i - 1); } } res = s[0]; for (int i = 0; i < 3; i++) { if (s[i]>res) { res = s[i]; } } return res; } 主函数: int main() { int n; cin >> n; int **a = new int*[n]; for (int i = 0; i < n; i++) { a[i] = new int[3]; for (int j = 0; j < 3; j++) { cin >> a[i][j]; } } int *res = new int[3]; for (int i = 0; i < 3; i++) { res[i] = score(a, n - 1, i); } int result = res[0]; for (int i = 0; i < 3; i++) { if (res[i]>result) { result = res[i]; } } cout << result << endl; system("pause"); return 0; }
点赞 评论

相关推荐

点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务