Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;:Hackerank:获取输入时出错_C++_C99 - Fatal编程技术网

C++ c++;:Hackerank:获取输入时出错

C++ c++;:Hackerank:获取输入时出错,c++,c99,C++,C99,这是我问题的一部分。我试了很多次,但都没有得到答案 问题陈述 4 5 10101 11100 11010 00101 5 2 您将收到N名参加ACM-ICPC世界决赛的人员的名单。他们每个人要么精通某个主题,要么不精通。找出两人团队可以知道的最大主题数。并找出有多少团队可以知道最大数量的主题 注:假设a、b和c是三个不同的人,那么(a、b)和(b、c)被算作两个不同的团队 输入格式 4 5 10101 11100 11010 00101 5 2 第一行包含两个整数,N和M,由一个空格分隔

这是我问题的一部分。我试了很多次,但都没有得到答案

问题陈述

4 5
10101
11100
11010
00101
5
2
您将收到N名参加ACM-ICPC世界决赛的人员的名单。他们每个人要么精通某个主题,要么不精通。找出两人团队可以知道的最大主题数。并找出有多少团队可以知道最大数量的主题

注:假设a、b和c是三个不同的人,那么(a、b)和(b、c)被算作两个不同的团队

输入格式

4 5
10101
11100
11010
00101
5
2
第一行包含两个整数,N和M,由一个空格分隔,其中N表示人数,M表示主题数量。接着是N行。 每行包含一个长度为M的二进制字符串。如果第i行的第j个字符为1,则第i个人知道第j个主题;否则,他就不知道这个话题

约束

2≤N≤500 
1≤M≤500
输出格式

4 5
10101
11100
11010
00101
5
2
在第一行,打印两人团队可以知道的最大主题数。 在第二行,打印可以知道最大主题数的2人团队的数量

样本输入

4 5
10101
11100
11010
00101
5
2
样本输出

4 5
10101
11100
11010
00101
5
2
解释

(1,3)和(3,4)知道所有5个主题。所以一个两人团队知道的最大主题是5个,只有两个团队可以做到这一点

这是我工作的一部分。有什么线索可以让我的工作正常吗

#include <cmath>
#include <cstdio>  
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int n, m, max = 0, max1 = 0, count = 0;
    cin >> n >> m;                                 //for input of N and M
    int a[n][m];

    for (int i = 0; i<n; i++)         //for input of N integers of digit size M
    for (int j = 0; j<m; j + >>
        cin >> a[i][j];

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            max = 0;
            for (int k = 0; k<m; k++)
            {
                if (a[i][k] == 1 || a[j][k] == 1) max++;
                cout << k;
                if (k = m - 1 && max>max1) max1 = max;
                if (k == m - 1 && max == max1) count++;;

            }
        }
    }

    cout << max1 << endl << count;
    return 0;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
int n,m,max=0,max1=0,count=0;
cin>>n>>m;//用于输入n和m
int a[n][m];
对于(int i=0;i
cin>>a[i][j];
对于(int i=0;i因为(intk=0;k我身边没有编译器,所以里面可能有一两个语法错误,但逻辑在纸上可以理解

构建存储:

std::cin >> n >> m; //for input of N and M
std::vector<std::vector<bool>>list(n,std::vector<bool>(m, false));
char temp;
for (int i = 0; i < n; i++) //for input of N integers of digit size M
{
    for (int j = 0; j < m; j++)
    {
        std::cin >> temp;
        if (temp == 1)
        {
            list[i][j] = true;
        }
    }
}
std::cin>>n>>m;//用于输入n和m
std::vectorlist(n,std::vector(m,false));
加载存储:

std::cin >> n >> m; //for input of N and M
std::vector<std::vector<bool>>list(n,std::vector<bool>(m, false));
char temp;
for (int i = 0; i < n; i++) //for input of N integers of digit size M
{
    for (int j = 0; j < m; j++)
    {
        std::cin >> temp;
        if (temp == 1)
        {
            list[i][j] = true;
        }
    }
}
chartemp;
for(int i=0;i>温度;
如果(温度==1)
{
列表[i][j]=真;
}
}
}
运行算法

for (int a = 0; a < n; a++)
{
    for (int b = a+1; b < n; b++)
    {
        int knowcount = 0;
        for (int j = 0; j < m; j++)
        {
            if (list[a][j] | list[b][j])
            {
                knowcount ++;
            }
        }
        if (knowcount > max)
        {
            groupcount = 1;
            max = know;
        }
        else if(knowcount == max)
        {
            groupcount ++;
        }
    }
}
for(int a=0;a最大值)
{
groupcount=1;
max=知道;
}
否则如果(knowcount==最大值)
{
groupcount++;
}
}
}

您的输入方法是错误的。根据您的方法,输入必须如下所示(各个数字之间有空格):


只有这样,创建矩阵才有意义。但由于问题中的格式在同一行中的数字之间不包含任何空格,因此此方法将失败。考虑到测试用例,您可能会尝试将“N”数字存储在一维整数数组中,但请记住约束条件('M'可以大到500,int或甚至无符号long long int数据类型都不能存储这么大的数字)。

您不能这样做
cin>>n>>M;
,然后
int a[n][M];
,数组大小必须在编译时知道,而不是在运行时。那么在这个问题上我应该如何获取输入?您可以创建一个
std::vector
。但是,先生,我如何具体读取整数的位数,编译时删除其大小的数组大小问题在C99中是有效的。不要将10101视为第一个输入。它是一个流。
>cin>>char
将从该流中读取一个字符,跳过并丢弃所有常用的空白字符。重复的
cin>>char
将继续一次提取一个字符。在(std::cin>>temp)期间换行
cout@user4581301是的,你是对的。我不知道这一点。但是,Hammad接受输入的方式是错误的,不是吗?哦,是的,是错误的。整行,或者尽可能多的int,在不导致转换失败的情况下,将作为一个整数读取。