//本地自己写的,不知道A了多少     //动规,机器人走格子问题,这次要跳着走     int n; cin >> n; vector<vector<int>> M(n, vector<int>(n,0)); for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { cin >> M[i][j]; } } vector<vector<int>> dp(n,vector<int>(n,0));     //初始化前两列 for (int i = 2; i < dp.size(); i += 2) { dp[i][0] = dp[i-2][0] + M[i-1][0]; dp[i][1] = dp[i-2][1] + M[i-1][1]; }     // i = i + 2 for (int i = 2; i < dp.size(); i += 2) { for (int j = 2; j < dp[i].size(); ++j) { int x = dp[i - 2][j] + M[i - 1][j]; int y = dp[i][j - 2] + M[i][j - 1]; dp[i][j] = min(dp[i-2][j]+M[i-1][j],dp[i][j-2]+M[i][j-1]); } } for (int j = 0; j < dp[n - 1].size(); ++j) { dp[n - 1][j] = dp[n - 2][j] + M[n - 1][j]; } vector<int> resdp(dp[n-1]); sort(resdp.begin(), resdp.end()); cout << resdp[0] << "\n";
点赞 评论
牛客网
牛客企业服务