请问我的代码缺少什么

编程训练计划
比赛题目
时间限制:C/C++ 1000MS,其他语言 2000MS
内存限制:C/C++ 256MB,其他语言 512MB
分数:100
描述

编程比赛已经临近了,小星觉得只用周末的时间来练习编程是远远不够的,小星和一起学习编程的小伙们商量了一下,打算制定周一到周五晚上的编程学习程计划,每天晚上练习一个小时的编程,当然小星和小伙伴并不是每天晚上都有时间来完成这个计划,毕竟学校的任务太多太多

现在请我们求出来,小星和小伙们能够学习编程人数最多一天的人数,分别都有哪几天,请按周一到周五的顺序输出,并用逗号分隔(不带空格)。

输入描述

第一行数,输入一个 n(0<=n<=100) 表示学习编程的人数

接下来 n 行,分别表示每一个小伙伴周一到周五的时间安排

Y 表示能够学习编程,. 表示任务太多了,没有时间学习

输出描述

第一行表示,学习编程人数最多一天的人数
第二行表示,那一天小星和小伙们能够学习编程的人数最多,如果有多天,请按周一到周五的顺序输出,并用逗号分隔(不带空格)。

用例输入

5
YY..Y
.YY.Y
.Y.Y.
.YY.Y
Y...Y

用例输出

4
2,5

#include<iostream> 
#include<cstdio>
using namespace std;
int main()
{
    
    
    int n,x;
    cin>>n;
    int b[n],c[n];
    for(int i=0;i<n;i++){
        b[i]=0;
    }
    for(int i=0;i<n;i++){
        c[i]=0;
    }
    char a[n];
    for(int j=0;j<n;j++){
    for(int i=0;i<4;i++){
        cin>>a[i];
        if(a[i]=='Y'){
            b[i]=b[i]+1;
            c[i]=c[i]+1;    
        }
    }
}
    for(int i = 0; i < n; i++)
    {
        for(int j = i+1; j < n+1; j++)
        {
            if(b[i]<b[j])    
            {
                int temp=0;        
                temp = b[i];
                b[i] = b[j]; 
                b[j] = temp;   
            }
        }
    }

    x=b[0];
    cout<<x<<endl;
    for(int i=0;i<4;i++){
        if(c[i]==x){
            cout<<i+1<<',';    
        }
    }
    cout<<'5';
    return 0;     
   
} 

请问我的代码缺少什么

倒数第三个for之前是不是多了个}

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7589640
  • 除此之外, 这篇博客: 键盘输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小。(C++)(贪心法)中的 键盘输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小。输入数据均不需判错。输出应包括所去掉的数字的位置和组成的新的正整数(N不超过240位)。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 用到的思想—贪心法
    博主用到的环境:Win7, CodeBlocks等。

  • 以下回答由chatgpt基于相关博客总结生成:

    问题分析:

    给定学习编程人数和每个人的周一到周五时间安排,要求输出学习编程人数最多一天的人数和该天能够学习编程的人数最多的一天。

    代码问题:

    参考代码未给出问题代码。

    解决方案:

    1. 定义一个学生类。

    在代码的起始部分,定义一个学生类,用来记录每个学生的周一到周五的时间安排和该学生是否有学习时间。

    class student{
    public:
        int time[5]; // 记录每天时间安排
        int availability = 0; // 如果有学习时间,availability = 1,否则 =0
    };
    
    1. 输入数据。

    输入首先包括一个 n(1<=n<=100)表示学习编程的人数。然后包括 n 行数据,每行包括 5 个整数,表示对应学生周一到周五的时间安排。

    int n; // 学习编程的人数
    cin >> n;
    vector<student> s(n);
    for(int i = 0; i < n; i++){
        for(int j = 0; j < 5; j++){
            cin >> s[i].time[j];
            if(s[i].time[j] != 0){ // 有空余时间
                s[i].availability = 1; // 标记
            }
        }
    }
    
    1. 统计每一天的人数和可用时间的人数。
    vector<int> countDay(5, 0); // 统计每天的人数
    vector<int> countAvailable(5, 0); // 统计能够学习编程的人数
    for(int i = 0; i < n; i++){
        for(int j = 0; j < 5; j++){
            if(s[i].availability == 1){ // 学生有空余时间
                countDay[j]++;
                countAvailable[j] += 1;
            }
        }
    }
    
    1. 输出学习编程人数最多的一天的人数和该天能够学习编程的人数最多的一天。
    int maxCount = 0, maxAvailable = 0;
    for(int i = 0; i < 5; i++){
        if(countDay[i] >= maxCount){
            maxCount = countDay[i];
        }
        if(countAvailable[i] >= maxAvailable){
            maxAvailable = countAvailable[i];
        }
    }
    cout << maxCount << " " << maxAvailable << endl;
    

    完整代码:

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    class student{
    public:
        int time[5]; // 记录每天时间安排
        int availability = 0; // 如果有学习时间,availability = 1,否则 =0
    };
    
    int main(){
        int n; // 学习编程的人数
        cin >> n;
        vector<student> s(n);
        for(int i = 0; i < n; i++){
            for(int j = 0; j < 5; j++){
                cin >> s[i].time[j];
                if(s[i].time[j] != 0){ // 有空余时间
                    s[i].availability = 1; // 标记
                }
            }
        }
    
        vector<int> countDay(5, 0); // 统计每天的人数
        vector<int> countAvailable(5, 0); // 统计能够学习编程的人数
        for(int i = 0; i < n; i++){
            for(int j = 0; j < 5; j++){
                if(s[i].availability == 1){ // 学生有空余时间
                    countDay[j]++;
                    countAvailable[j] += 1;
                }
            }
        }
    
        int maxCount = 0, maxAvailable = 0;
        for(int i = 0; i < 5; i++){
            if(countDay[i] >= maxCount){
                maxCount = countDay[i];
            }
            if(countAvailable[i] >= maxAvailable){
                maxAvailable = countAvailable[i];
            }
        }
        cout << maxCount << " " << maxAvailable << endl;
    
        return 0;
    }