鱼C论坛

 找回密码
 立即注册
查看: 1964|回复: 1

修改代码,感觉逻辑上没有问题

[复制链接]
发表于 2023-10-30 14:39:58 | 显示全部楼层 |阅读模式
2鱼币
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N=50;
  4. vector<int>a;
  5. int b[N];

  6. int main()
  7. {
  8.     int s1,s2,s3;
  9.     cin>>s1>>s2>>s3;
  10.     memset(b,0,sizeof(b));
  11.     for(int i=1;i<=s1;i++)
  12.     {
  13.         for( int j=1;j<=s2;j++)
  14.         {
  15.             for(int k=1;k<=s3;k++)
  16.             {
  17.                 a.push_back(i+j+k);
  18.             }
  19.         }
  20.     }
  21.     sort(a.begin(),a.end());
  22.     for(auto i:a)
  23.     {
  24.         b[i]++;
  25.     }
  26.     int max=0;
  27.     for(int i=0;b[i];i++)
  28.     {
  29.         if(max>b[i])
  30.         max=b[i];
  31.     }
  32.     cout<<max<<endl;


  33. }
复制代码

洛谷上题目链接:https://www.luogu.com.cn/problem/P2911

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-10-30 14:40:15 | 显示全部楼层
这段代码的逻辑上是有问题的。在循环中,我们将所有可能的i+j+k的结果都存储在向量a中,然后对a进行排序。接下来,我们遍历向量a,并将每个元素的计数存储在数组b中。最后,我们在数组b中查找最大值并输出。

然而,这段代码有两个问题:
1. 我们没有初始化变量max的值。在for循环之前,我们应该将max初始化为一个较小的值,例如INT_MIN。
2. 在第二个for循环中,我们应该使用小于等于号(<=)而不是小于号(<)来判断循环的终止条件。因为数组b的元素可能为0,所以当b[ i]为0时,循环应该终止。

下面是修改后的代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N = 50;
  4. vector<int> a;
  5. int b[N];

  6. int main()
  7. {
  8.     int s1, s2, s3;
  9.     cin >> s1 >> s2 >> s3;
  10.     memset(b, 0, sizeof(b));
  11.     for (int i = 1; i <= s1; i++)
  12.     {
  13.         for (int j = 1; j <= s2; j++)
  14.         {
  15.             for (int k = 1; k <= s3; k++)
  16.             {
  17.                 a.push_back(i + j + k);
  18.             }
  19.         }
  20.     }
  21.     sort(a.begin(), a.end());
  22.     for (auto i : a)
  23.     {
  24.         b[ i]++;
  25.     }
  26.     int max = INT_MIN;
  27.     for (int i = 0; b[ i] <= 0; i++)
  28.     {
  29.         if (max < b[ i])
  30.             max = b[ i];
  31.     }
  32.     cout << max << endl;
  33. }
复制代码


通过这些修改,代码应该能够正确地计算并输出最大值了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 00:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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