鱼C论坛

 找回密码
 立即注册
查看: 1960|回复: 4

[已解决]求教怎么用vector实现数塔问题

[复制链接]
发表于 2021-3-31 18:34:20 | 显示全部楼层 |阅读模式
20鱼币
  1. /*因为最近在学STL库,所以想用vector代替二维数组实现数塔问题
  2. 输入如下
  3. 5
  4. 5
  5. 8 3
  6. 12 7 16
  7. 4 10 11 6
  8. 9 5 3 9 4
  9. 输出如下
  10. 44

  11. 输入倒是可以正常输入  输出不出来程序直接退出了 大佬们帮忙看看吧QAQ(我知道二维数组就可以实现,就是想知道vector能不能这样用解决问题)
  12. */
  13. #include <bits/stdc++.h>
  14. using namespace std;

  15. int main()
  16. {
  17.     int n,temp;
  18.     cin>>n;
  19.     vector<vector<int> > f(n+1);
  20.     vector<vector<int> > dp(n+1);
  21.     vector<int> v(n+1);
  22.     for(int i=1;i<=n;i++){
  23.             v.clear();
  24.         for(int j=1;j<=i;j++){
  25.             cin>>temp;
  26.             v.push_back(temp);
  27.         }
  28.         f.push_back(v);
  29.     }
  30.     for(int j=1;j<=n;j++){
  31.         dp[n][j]=f[n][j];
  32.     }
  33.     for(int i=n-1;i>=1;i++){
  34.         for(int j=1;j<=i;j++)
  35.         {

  36.             dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+f[i][j];
  37.         }
  38.     }
  39.     cout<<dp[1][1]<<endl;
  40.     return 0;
  41. }
复制代码
最佳答案
2021-3-31 18:34:21
本帖最后由 人造人 于 2021-4-1 02:08 编辑

你的这个算法参考的哪个教程?我有点看不懂你的这个算法,我需要先去看一看你这个算法的实现思路,因为你的代码没有注释,^_^
我用vector写了4个版本,两个递归的和两个非递归的,同样没有注释,^_^
我参考了这个教程,如果要理解我写的这些代码,可以先去看一下这篇文章
https://blog.csdn.net/theonegis/article/details/45801201

  1. #include <iostream>
  2. #include <memory>
  3. #include <vector>

  4. struct data_tower_t {
  5.     ssize_t data;
  6.     std::shared_ptr<data_tower_t> lchild;
  7.     std::shared_ptr<data_tower_t> rchild;
  8.     std::shared_ptr<data_tower_t> rsibling;
  9. };

  10. const std::vector<std::shared_ptr<data_tower_t>> get_data(std::istream &is, size_t size) {
  11.     std::vector<std::shared_ptr<data_tower_t>> result;
  12.     ssize_t data;
  13.     for(size_t i = 0; i < size; ++i) {
  14.         if(is >> data) {
  15.             std::shared_ptr<data_tower_t> n = std::make_shared<data_tower_t>();
  16.             n->data = data;
  17.             result.push_back(n);
  18.         } else if(i == 0) return result;
  19.         else throw "输入数据错误";
  20.     }
  21.     return result;
  22. }

  23. const std::shared_ptr<data_tower_t> create_data_tower(std::istream &is) {
  24.     std::shared_ptr<data_tower_t> result;
  25.     std::shared_ptr<data_tower_t> p, q;
  26.     for(size_t i = 1; ; ++i) {
  27.         std::vector<std::shared_ptr<data_tower_t>> v = get_data(is, i);
  28.         if(v.empty()) return result;
  29.         for(auto iter = v.begin(); iter != v.end() - 1; ++iter) (*iter)->rsibling = *(iter + 1);
  30.         if(i == 1) p = result = v[0];
  31.         else {
  32.             q = p;
  33.             for(auto iter = v.begin(); iter != v.end(); ++iter) {
  34.                 if(!q->lchild) q->lchild = *iter;
  35.                 else {
  36.                     q->rchild = *iter;
  37.                     q = q->rsibling;
  38.                     if(q) q->lchild = *iter;
  39.                 }
  40.             }
  41.             p = p->lchild;
  42.         }
  43.     }
  44.     return result;
  45. }

  46. ssize_t get_sum(const std::vector<ssize_t> &v) {
  47.     ssize_t sum = 0;
  48.     for(const auto &i: v) sum += i;
  49.     return sum;
  50. }

  51. const std::vector<ssize_t> get_path(const std::shared_ptr<data_tower_t> &d) {
  52.     if(d->lchild == nullptr && d->rchild == nullptr) return std::vector<ssize_t>({d->data});
  53.     std::vector<ssize_t> lv = get_path(d->lchild);
  54.     std::vector<ssize_t> rv = get_path(d->rchild);
  55.     std::vector<ssize_t> *mv = get_sum(lv) > get_sum(rv) ? &lv : &rv;
  56.     mv->insert(mv->begin(), d->data);
  57.     return *mv;
  58. }

  59. std::ostream &operator<<(std::ostream &os, const std::vector<ssize_t> &rhs) {
  60.     for(const auto &i: rhs) os << i << " ";
  61.     return os;
  62. }

  63. int main() {
  64.     std::shared_ptr<data_tower_t> data_tower = create_data_tower(std::cin);
  65.     std::cout << get_path(data_tower) << std::endl;
  66.     return 0;
  67. }
复制代码

  1. #include <iostream>
  2. #include <memory>
  3. #include <vector>

  4. struct data_tower_t {
  5.     ssize_t data;
  6.     std::shared_ptr<data_tower_t> lchild;
  7.     std::shared_ptr<data_tower_t> rchild;
  8.     std::shared_ptr<data_tower_t> rsibling;
  9. };

  10. const std::vector<std::shared_ptr<data_tower_t>> get_data(std::istream &is, size_t size) {
  11.     std::vector<std::shared_ptr<data_tower_t>> result;
  12.     ssize_t data;
  13.     for(size_t i = 0; i < size; ++i) {
  14.         if(is >> data) {
  15.             std::shared_ptr<data_tower_t> n = std::make_shared<data_tower_t>();
  16.             n->data = data;
  17.             result.push_back(n);
  18.         } else if(i == 0) return result;
  19.         else throw "输入数据错误";
  20.     }
  21.     return result;
  22. }

  23. const std::shared_ptr<data_tower_t> create_data_tower(std::istream &is) {
  24.     std::shared_ptr<data_tower_t> result;
  25.     std::shared_ptr<data_tower_t> p, q;
  26.     for(size_t i = 1; ; ++i) {
  27.         std::vector<std::shared_ptr<data_tower_t>> v = get_data(is, i);
  28.         if(v.empty()) return result;
  29.         for(auto iter = v.begin(); iter != v.end() - 1; ++iter) (*iter)->rsibling = *(iter + 1);
  30.         if(i == 1) p = result = v[0];
  31.         else {
  32.             q = p;
  33.             for(auto iter = v.begin(); iter != v.end(); ++iter) {
  34.                 if(!q->lchild) q->lchild = *iter;
  35.                 else {
  36.                     q->rchild = *iter;
  37.                     q = q->rsibling;
  38.                     if(q) q->lchild = *iter;
  39.                 }
  40.             }
  41.             p = p->lchild;
  42.         }
  43.     }
  44.     return result;
  45. }

  46. ssize_t get_max(const std::shared_ptr<data_tower_t> &d) {
  47.     if(d->lchild == nullptr && d->rchild == nullptr) return d->data;
  48.     ssize_t ls = get_max(d->lchild);
  49.     ssize_t rs = get_max(d->rchild);
  50.     ssize_t ms = ls > rs ? ls : rs;
  51.     return ms + d->data;
  52. }

  53. int main() {
  54.     std::shared_ptr<data_tower_t> data_tower = create_data_tower(std::cin);
  55.     std::cout << get_max(data_tower) << std::endl;
  56.     return 0;
  57. }
复制代码

  1. #include <iostream>
  2. #include <vector>

  3. const std::vector<ssize_t> get_line_data(std::istream &is, size_t size) {
  4.     std::vector<ssize_t> result;
  5.     ssize_t data;
  6.     for(size_t i = 0; i < size; ++i) {
  7.         if(is >> data) {
  8.             result.push_back(data);
  9.         } else if(i == 0) return result;
  10.         else throw "输入数据错误";
  11.     }
  12.     return result;
  13. }

  14. const std::vector<std::vector<ssize_t>> create_data_tower(std::istream &is) {
  15.     std::vector<std::vector<ssize_t>> result;
  16.     for(size_t i = 1; ; ++i) {
  17.         std::vector<ssize_t> v = get_line_data(is, i);
  18.         if(v.empty()) return result;
  19.         result.push_back(v);
  20.     }
  21.     return result;
  22. }

  23. ssize_t get_sum(const std::vector<ssize_t> &v) {
  24.     ssize_t sum = 0;
  25.     for(const auto &i: v) sum += i;
  26.     return sum;
  27. }

  28. const std::vector<ssize_t> get_path(const std::vector<std::vector<ssize_t>> &d) {
  29.     std::vector<std::vector<ssize_t>> p((d.end() - 1)->size());
  30.     for(size_t i = d.size() - 1; i > 0; --i) {
  31.         std::vector<std::vector<ssize_t>> c(d[i - 1].size());
  32.         for(size_t j = 0; j < c.size(); ++j) {
  33.             if(j == 0) p[j].insert(p[j].begin(), d[i][j]);
  34.             p[j + 1].insert(p[j + 1].begin(), d[i][j + 1]);
  35.             ssize_t ls = get_sum(p[j]);
  36.             ssize_t rs = get_sum(p[j + 1]);
  37.             c[j] = ls > rs ? p[j] : p[j + 1];
  38.         }
  39.         p = c;
  40.     }
  41.     p[0].insert(p[0].begin(), d[0][0]);
  42.     return p[0];
  43. }

  44. std::ostream &operator<<(std::ostream &os, const std::vector<ssize_t> &rhs) {
  45.     for(const auto &i: rhs) os << i << " ";
  46.     return os;
  47. }

  48. int main() {
  49.     std::vector<std::vector<ssize_t>> data_tower = create_data_tower(std::cin);
  50.     std::cout << get_path(data_tower) << std::endl;
  51.     return 0;
  52. }
复制代码

  1. #include <iostream>
  2. #include <vector>

  3. const std::vector<ssize_t> get_line_data(std::istream &is, size_t size) {
  4.     std::vector<ssize_t> result;
  5.     ssize_t data;
  6.     for(size_t i = 0; i < size; ++i) {
  7.         if(is >> data) {
  8.             result.push_back(data);
  9.         } else if(i == 0) return result;
  10.         else throw "输入数据错误";
  11.     }
  12.     return result;
  13. }

  14. const std::vector<std::vector<ssize_t>> create_data_tower(std::istream &is) {
  15.     std::vector<std::vector<ssize_t>> result;
  16.     for(size_t i = 1; ; ++i) {
  17.         std::vector<ssize_t> v = get_line_data(is, i);
  18.         if(v.empty()) return result;
  19.         result.push_back(v);
  20.     }
  21.     return result;
  22. }

  23. ssize_t get_max(const std::vector<std::vector<ssize_t>> &d) {
  24.     std::vector<ssize_t> p((d.end() - 1)->size());
  25.     for(size_t i = d.size() - 1; i > 0; --i) {
  26.         std::vector<ssize_t> c(d[i - 1].size());
  27.         for(size_t j = 0; j < c.size(); ++j) {
  28.             ssize_t ls = p[j] + d[i][j];
  29.             ssize_t rs = p[j + 1] + d[i][j + 1];
  30.             c[j] = ls > rs ? ls : rs;
  31.         }
  32.         p = c;
  33.     }
  34.     return p[0] + d[0][0];
  35. }

  36. int main() {
  37.     std::vector<std::vector<ssize_t>> data_tower = create_data_tower(std::cin);
  38.     std::cout << get_max(data_tower) << std::endl;
  39.     return 0;
  40. }
复制代码

最佳答案

查看完整内容

你的这个算法参考的哪个教程?我有点看不懂你的这个算法,我需要先去看一看你这个算法的实现思路,因为你的代码没有注释,^_^ 我用vector写了4个版本,两个递归的和两个非递归的,同样没有注释,^_^ 我参考了这个教程,如果要理解我写的这些代码,可以先去看一下这篇文章 https://blog.csdn.net/theonegis/article/details/45801201
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-3-31 18:34:21 | 显示全部楼层    本楼为最佳答案   
本帖最后由 人造人 于 2021-4-1 02:08 编辑

你的这个算法参考的哪个教程?我有点看不懂你的这个算法,我需要先去看一看你这个算法的实现思路,因为你的代码没有注释,^_^
我用vector写了4个版本,两个递归的和两个非递归的,同样没有注释,^_^
我参考了这个教程,如果要理解我写的这些代码,可以先去看一下这篇文章
https://blog.csdn.net/theonegis/article/details/45801201

  1. #include <iostream>
  2. #include <memory>
  3. #include <vector>

  4. struct data_tower_t {
  5.     ssize_t data;
  6.     std::shared_ptr<data_tower_t> lchild;
  7.     std::shared_ptr<data_tower_t> rchild;
  8.     std::shared_ptr<data_tower_t> rsibling;
  9. };

  10. const std::vector<std::shared_ptr<data_tower_t>> get_data(std::istream &is, size_t size) {
  11.     std::vector<std::shared_ptr<data_tower_t>> result;
  12.     ssize_t data;
  13.     for(size_t i = 0; i < size; ++i) {
  14.         if(is >> data) {
  15.             std::shared_ptr<data_tower_t> n = std::make_shared<data_tower_t>();
  16.             n->data = data;
  17.             result.push_back(n);
  18.         } else if(i == 0) return result;
  19.         else throw "输入数据错误";
  20.     }
  21.     return result;
  22. }

  23. const std::shared_ptr<data_tower_t> create_data_tower(std::istream &is) {
  24.     std::shared_ptr<data_tower_t> result;
  25.     std::shared_ptr<data_tower_t> p, q;
  26.     for(size_t i = 1; ; ++i) {
  27.         std::vector<std::shared_ptr<data_tower_t>> v = get_data(is, i);
  28.         if(v.empty()) return result;
  29.         for(auto iter = v.begin(); iter != v.end() - 1; ++iter) (*iter)->rsibling = *(iter + 1);
  30.         if(i == 1) p = result = v[0];
  31.         else {
  32.             q = p;
  33.             for(auto iter = v.begin(); iter != v.end(); ++iter) {
  34.                 if(!q->lchild) q->lchild = *iter;
  35.                 else {
  36.                     q->rchild = *iter;
  37.                     q = q->rsibling;
  38.                     if(q) q->lchild = *iter;
  39.                 }
  40.             }
  41.             p = p->lchild;
  42.         }
  43.     }
  44.     return result;
  45. }

  46. ssize_t get_sum(const std::vector<ssize_t> &v) {
  47.     ssize_t sum = 0;
  48.     for(const auto &i: v) sum += i;
  49.     return sum;
  50. }

  51. const std::vector<ssize_t> get_path(const std::shared_ptr<data_tower_t> &d) {
  52.     if(d->lchild == nullptr && d->rchild == nullptr) return std::vector<ssize_t>({d->data});
  53.     std::vector<ssize_t> lv = get_path(d->lchild);
  54.     std::vector<ssize_t> rv = get_path(d->rchild);
  55.     std::vector<ssize_t> *mv = get_sum(lv) > get_sum(rv) ? &lv : &rv;
  56.     mv->insert(mv->begin(), d->data);
  57.     return *mv;
  58. }

  59. std::ostream &operator<<(std::ostream &os, const std::vector<ssize_t> &rhs) {
  60.     for(const auto &i: rhs) os << i << " ";
  61.     return os;
  62. }

  63. int main() {
  64.     std::shared_ptr<data_tower_t> data_tower = create_data_tower(std::cin);
  65.     std::cout << get_path(data_tower) << std::endl;
  66.     return 0;
  67. }
复制代码

  1. #include <iostream>
  2. #include <memory>
  3. #include <vector>

  4. struct data_tower_t {
  5.     ssize_t data;
  6.     std::shared_ptr<data_tower_t> lchild;
  7.     std::shared_ptr<data_tower_t> rchild;
  8.     std::shared_ptr<data_tower_t> rsibling;
  9. };

  10. const std::vector<std::shared_ptr<data_tower_t>> get_data(std::istream &is, size_t size) {
  11.     std::vector<std::shared_ptr<data_tower_t>> result;
  12.     ssize_t data;
  13.     for(size_t i = 0; i < size; ++i) {
  14.         if(is >> data) {
  15.             std::shared_ptr<data_tower_t> n = std::make_shared<data_tower_t>();
  16.             n->data = data;
  17.             result.push_back(n);
  18.         } else if(i == 0) return result;
  19.         else throw "输入数据错误";
  20.     }
  21.     return result;
  22. }

  23. const std::shared_ptr<data_tower_t> create_data_tower(std::istream &is) {
  24.     std::shared_ptr<data_tower_t> result;
  25.     std::shared_ptr<data_tower_t> p, q;
  26.     for(size_t i = 1; ; ++i) {
  27.         std::vector<std::shared_ptr<data_tower_t>> v = get_data(is, i);
  28.         if(v.empty()) return result;
  29.         for(auto iter = v.begin(); iter != v.end() - 1; ++iter) (*iter)->rsibling = *(iter + 1);
  30.         if(i == 1) p = result = v[0];
  31.         else {
  32.             q = p;
  33.             for(auto iter = v.begin(); iter != v.end(); ++iter) {
  34.                 if(!q->lchild) q->lchild = *iter;
  35.                 else {
  36.                     q->rchild = *iter;
  37.                     q = q->rsibling;
  38.                     if(q) q->lchild = *iter;
  39.                 }
  40.             }
  41.             p = p->lchild;
  42.         }
  43.     }
  44.     return result;
  45. }

  46. ssize_t get_max(const std::shared_ptr<data_tower_t> &d) {
  47.     if(d->lchild == nullptr && d->rchild == nullptr) return d->data;
  48.     ssize_t ls = get_max(d->lchild);
  49.     ssize_t rs = get_max(d->rchild);
  50.     ssize_t ms = ls > rs ? ls : rs;
  51.     return ms + d->data;
  52. }

  53. int main() {
  54.     std::shared_ptr<data_tower_t> data_tower = create_data_tower(std::cin);
  55.     std::cout << get_max(data_tower) << std::endl;
  56.     return 0;
  57. }
复制代码

  1. #include <iostream>
  2. #include <vector>

  3. const std::vector<ssize_t> get_line_data(std::istream &is, size_t size) {
  4.     std::vector<ssize_t> result;
  5.     ssize_t data;
  6.     for(size_t i = 0; i < size; ++i) {
  7.         if(is >> data) {
  8.             result.push_back(data);
  9.         } else if(i == 0) return result;
  10.         else throw "输入数据错误";
  11.     }
  12.     return result;
  13. }

  14. const std::vector<std::vector<ssize_t>> create_data_tower(std::istream &is) {
  15.     std::vector<std::vector<ssize_t>> result;
  16.     for(size_t i = 1; ; ++i) {
  17.         std::vector<ssize_t> v = get_line_data(is, i);
  18.         if(v.empty()) return result;
  19.         result.push_back(v);
  20.     }
  21.     return result;
  22. }

  23. ssize_t get_sum(const std::vector<ssize_t> &v) {
  24.     ssize_t sum = 0;
  25.     for(const auto &i: v) sum += i;
  26.     return sum;
  27. }

  28. const std::vector<ssize_t> get_path(const std::vector<std::vector<ssize_t>> &d) {
  29.     std::vector<std::vector<ssize_t>> p((d.end() - 1)->size());
  30.     for(size_t i = d.size() - 1; i > 0; --i) {
  31.         std::vector<std::vector<ssize_t>> c(d[i - 1].size());
  32.         for(size_t j = 0; j < c.size(); ++j) {
  33.             if(j == 0) p[j].insert(p[j].begin(), d[i][j]);
  34.             p[j + 1].insert(p[j + 1].begin(), d[i][j + 1]);
  35.             ssize_t ls = get_sum(p[j]);
  36.             ssize_t rs = get_sum(p[j + 1]);
  37.             c[j] = ls > rs ? p[j] : p[j + 1];
  38.         }
  39.         p = c;
  40.     }
  41.     p[0].insert(p[0].begin(), d[0][0]);
  42.     return p[0];
  43. }

  44. std::ostream &operator<<(std::ostream &os, const std::vector<ssize_t> &rhs) {
  45.     for(const auto &i: rhs) os << i << " ";
  46.     return os;
  47. }

  48. int main() {
  49.     std::vector<std::vector<ssize_t>> data_tower = create_data_tower(std::cin);
  50.     std::cout << get_path(data_tower) << std::endl;
  51.     return 0;
  52. }
复制代码

  1. #include <iostream>
  2. #include <vector>

  3. const std::vector<ssize_t> get_line_data(std::istream &is, size_t size) {
  4.     std::vector<ssize_t> result;
  5.     ssize_t data;
  6.     for(size_t i = 0; i < size; ++i) {
  7.         if(is >> data) {
  8.             result.push_back(data);
  9.         } else if(i == 0) return result;
  10.         else throw "输入数据错误";
  11.     }
  12.     return result;
  13. }

  14. const std::vector<std::vector<ssize_t>> create_data_tower(std::istream &is) {
  15.     std::vector<std::vector<ssize_t>> result;
  16.     for(size_t i = 1; ; ++i) {
  17.         std::vector<ssize_t> v = get_line_data(is, i);
  18.         if(v.empty()) return result;
  19.         result.push_back(v);
  20.     }
  21.     return result;
  22. }

  23. ssize_t get_max(const std::vector<std::vector<ssize_t>> &d) {
  24.     std::vector<ssize_t> p((d.end() - 1)->size());
  25.     for(size_t i = d.size() - 1; i > 0; --i) {
  26.         std::vector<ssize_t> c(d[i - 1].size());
  27.         for(size_t j = 0; j < c.size(); ++j) {
  28.             ssize_t ls = p[j] + d[i][j];
  29.             ssize_t rs = p[j + 1] + d[i][j + 1];
  30.             c[j] = ls > rs ? ls : rs;
  31.         }
  32.         p = c;
  33.     }
  34.     return p[0] + d[0][0];
  35. }

  36. int main() {
  37.     std::vector<std::vector<ssize_t>> data_tower = create_data_tower(std::cin);
  38.     std::cout << get_max(data_tower) << std::endl;
  39.     return 0;
  40. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-4-1 12:17:13 | 显示全部楼层
我看懂了,思路用的就是我上面那篇文章中提到的方法
代码改动的地方有点多,你一行一行的对代码吧

  1. /*因为最近在学STL库,所以想用vector代替二维数组实现数塔问题
  2.   输入如下
  3.   5
  4.   5
  5.   8 3
  6.   12 7 16
  7.   4 10 11 6
  8.   9 5 3 9 4
  9.   输出如下
  10.   44

  11.   输入倒是可以正常输入  输出不出来程序直接退出了 大佬们帮忙看看吧QAQ(我知道二维数组就可以实现,就是想知道vector能不能这样用解决问题)
  12.   */
  13. #include <bits/stdc++.h>
  14. using namespace std;

  15. int main()
  16. {
  17.     int n,temp;
  18.     cin>>n;
  19.     vector<vector<int> > f;
  20.     vector<vector<int> > dp(n);
  21.     vector<int> v;
  22.     for(int i=1;i<=n;i++){
  23.         v.clear();
  24.         for(int j=1;j<=i;j++){
  25.             cin>>temp;
  26.             v.push_back(temp);
  27.         }
  28.         f.push_back(v);
  29.     }
  30.     dp[n - 1] = f[n - 1];
  31.     for(int i = 0; i < n - 1; ++i) {
  32.         for(int j = 0; j <= i; ++j) {
  33.             dp[i].resize(j + 1);
  34.         }
  35.     }
  36.     for(int i = n - 2; i >= 0; i--){
  37.         for(int j = 0; j <= i; j++)
  38.         {
  39.             dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + f[i][j];
  40.         }
  41.     }
  42.     cout<<dp[0][0]<<endl;
  43.     return 0;
  44. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-4-1 12:20:00 | 显示全部楼层
人造人 发表于 2021-3-31 18:34
你的这个算法参考的哪个教程?我有点看不懂你的这个算法,我需要先去看一看你这个算法的实现思路,因为你的 ...

太感谢大佬了!看完你的代码对vector有一定了解了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-4-1 12:21:33 | 显示全部楼层
数据结构中确实说 数数从1开始,但是在编程中绝大多数情况都是从0开始
如果你在数据结构编程的时候从1开始,你就要非常非常的小心,因为一不小心就弄错边界了
所以还是建议数数从0开始,即使是数据结构编程的时候,这样就绝对不会弄错边界了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 12:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表