鱼C论坛

 找回密码
 立即注册
查看: 1067|回复: 2

代码实现

[复制链接]
发表于 2023-11-18 22:08:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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

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

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

int main() {
        int t;
        cin >> t;
        while (t--) {
                solve();
        }
        return 0;
}
                                                                                                                        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-18 22:09:53 | 显示全部楼层
下面是修改后的代码,以实现题目描述的功能:
#include <iostream>#include <vector>using namespace std;void solve() {    int n, x;    cin >> n;    vector<int> a[2]; // 使用数组保存 0 和 1 的下标    for (int i = 1; i <= n; i++) {        cin >> x;        a[x].push_back(i);    }    int cnt = 0, maxn = 0;    int num = a[1].size();    for (int j = 1; j < num; j++) {        if (a[1][j] - a[1][j - 1] > 1) {            cnt++;        }    }    maxn = max(maxn, cnt);    cout << num - maxn << endl;}int main() {    int t;    cin >> t;    while (t--) {        solve();    }    return 0;}
修改说明:
- 添加了包含必要头文件<iostream><vector>
- 将变量cntmaxn的初始化移到solve()函数内部。
- 在solve()函数中,将输入变量nx的声明移至函数内部。
- 修改了统计相邻1之间距离大于1的个数的逻辑,并更新最大值maxn
- 添加输出语句cout << num - maxn << endl;,输出结果。

希望以上回答对你有所帮助。如果你还有其他问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[j] == 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的个数。

这样修改后的代码能够正确地实现题目描述的功能。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-7 02:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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