ds3.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include <iostream>
  2. #include <vector>
  3. #include <random>
  4. #include <iomanip>
  5. using namespace std;
  6. // 方法1: 生成特定的二维vector
  7. static vector<vector<int>> generateSpecificMatrix()
  8. {
  9. return {
  10. {2, 3, 4, 2, 5},
  11. {6, 2, 3, 1, 8},
  12. {3, 5, 4, 6, 4},
  13. {4, 2, 3, 2, 3},
  14. {2, 1, 6, 7, 5}};
  15. }
  16. // 方法2: 生成随机n×n数组
  17. vector<vector<int>> generateRandomMatrix(int n, int min_val = 1, int max_val = 10)
  18. {
  19. random_device rd;
  20. mt19937 gen(rd());
  21. uniform_int_distribution<int> dis(min_val, max_val);
  22. vector<vector<int>> matrix(n, vector<int>(n));
  23. for (int i = 0; i < n; i++)
  24. {
  25. for (int j = 0; j < n; j++)
  26. {
  27. matrix[i][j] = dis(gen);
  28. }
  29. }
  30. return matrix;
  31. }
  32. // 打印矩阵的辅助函数
  33. void printMatrix(const vector<vector<int>> &matrix)
  34. {
  35. for (const auto &row : matrix)
  36. {
  37. for (int val : row)
  38. {
  39. cout << setw(3) << val << " ";
  40. }
  41. cout << endl;
  42. }
  43. cout << endl;
  44. }
  45. int getMaxWay(std::vector<vector<int>> matrix)
  46. {
  47. int n = matrix.size();
  48. for (int i = 0; i < n; i++)
  49. {
  50. for (int j = 0; j < n; j++)
  51. {
  52. matrix[i][j] += max(i - 1 >= 0 ? matrix[i - 1][j] : 0, j - 1 >= 0 ? matrix[i][j - 1] : 0);
  53. }
  54. }
  55. printMatrix(matrix);
  56. return matrix[n - 1][n - 1];
  57. }
  58. int main()
  59. {
  60. auto matrix = generateSpecificMatrix();
  61. printMatrix(matrix);
  62. std::cout << getMaxWay(matrix);
  63. return 0;
  64. }
备用站点 当前处于降级运行的备用站点,仅供应急访问,数据和功能可能不是最新。