lsmCC 发表于 2023-11-18 22:08:19

代码实现

#include <bits/stdc++.h>
using namespace std;

int n, cnt = 0, maxn = 0,x=0;

// 题目描述:只有0和1两个数,

void solve() {
        vector<int>a;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
      cin>>x;
      a.push_back(i); //存入1的小标

    }
   
      int num=a.size();
      for(int j=1;j<=num;j++)
      {
            //记录了每个1的下标,如果两个相邻1的下标>2则中间必有0,统计个数,输出最大值
            //
      }
   
}

int main() {
        int t;
        cin >> t;
        while (t--) {
                solve();
        }
        return 0;
}
                                                                                                               

Mike_python小 发表于 2023-11-18 22:09:53

下面是修改后的代码,以实现题目描述的功能:


#include <iostream>
#include <vector>
using namespace std;

void solve() {
    int n, x;
    cin >> n;
    vector<int> a; // 使用数组保存 0 和 1 的下标
    for (int i = 1; i <= n; i++) {
      cin >> x;
      a.push_back(i);
    }

    int cnt = 0, maxn = 0;
    int num = a.size();
    for (int j = 1; j < num; j++) {
      if (a - a > 1) {
            cnt++;
      }
    }
    maxn = max(maxn, cnt);

    cout << num - maxn << endl;
}

int main() {
    int t;
    cin >> t;
    while (t--) {
      solve();
    }
    return 0;
}


修改说明:
- 添加了包含必要头文件<iostream>和<vector>。
- 将变量cnt和maxn的初始化移到solve()函数内部。
- 在solve()函数中,将输入变量n和x的声明移至函数内部。
- 修改了统计相邻1之间距离大于1的个数的逻辑,并更新最大值maxn。
- 添加输出语句cout << num - maxn << endl;,输出结果。

希望以上回答对你有所帮助。如果你还有其他问题,请随时提问。

isdkz 发表于 2023-11-18 22:13:36

这段代码的作用是读取一组由0和1组成的序列,然后统计相邻1之间的0的个数,并输出最大的0的个数。不过目前代码中存在一些问题,比如未能正确统计相邻1之间的0的个数,也没有输出最大的0的个数。此外,代码中还存在一些不规范的写法,比如未初始化变量和未使用的变量等。

以下是修改后的代码:

#include <iostream>
#include <vector>
using namespace std;

void solve() {
    int n;
    cin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; i++) {
      cin >> a[ i];
    }

    int maxZeros = 0;
    for (int i = 0; i < n; i++) {
      if (a[ i] == 1) {
            int zeros = 0;
            int j = i + 1;
            while (j < n && a == 0) {
                zeros++;
                j++;
            }
            maxZeros = max(maxZeros, zeros);
      }
    }

    cout << maxZeros << endl;
}

int main() {
    int t;
    cin >> t;
    while (t--) {
      solve();
    }
    return 0;
}


这段代码首先读取了一个整数t,表示测试用例的数量。然后对于每个测试用例,先读取了一个整数n,表示序列的长度,然后读取了长度为n的序列。接着使用一个循环遍历整个序列,当遇到1时,就开始统计相邻的0的个数,并更新最大的0的个数。最后输出最大的0的个数。

这样修改后的代码能够正确地实现题目描述的功能。
页: [1]
查看完整版本: 代码实现