1061正誤問題(15ポイント)

1061正誤問題(15ポイント)

正誤問題の判断は非常に簡単です。この質問では、教師が質問を判断し、正誤問題の生徒のスコアを数えるのに役立つ簡単なプログラムを作成する必要があります。

入力形式:
最初の行に100を超えない2つの正の整数NとMを入力します。これらは、それぞれ生徒の数と真または偽の質問の数です。2行目は、各質問の満点である5を超えないM個の正の整数を示します。3行目は、各質問に対する正解を示しています。0は「いいえ」を表し、1は「はい」を表します。次のN行では、各行が生徒の解を示します。数字はスペースで区切られます。

出力形式:
各生徒のスコアを入力順に出力します。各スコアは1行を占めます。

入力サンプル:

3 6
2 1 3 3 4 5
0 0 1 0 1 1
0 1 1 0 0 1
1 0 1 0 1 0
1 1 0 0 1 1

サンプル出力:

13
11
12

回答

マップは、スコアと回答に対応する2つのマッピングを作成します。重要なのは、質問番号です。
検査ラインごとに1ラインの合計スコアを出力します。


ACルーチン

#include<stdlib.h>
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<map>
using namespace std;

int main()
{
    
    
#ifdef ONLINE_JUDGE
#else 
    freopen("in.txt","r",stdin);
#endif
int n,m,i,x,sum=0;
map<int,int>mp1;
map<int,int>mp2;
cin>>n>>m;
for(i=1;i<=m;i++)
{
    
    
    cin>>x;mp1[i]=x;
}
for(i=1;i<=m;i++)
{
    
    
    cin>>x;mp2[i]=x;
}
while(n--)
{
    
    
    sum=0;
    for(i=1;i<=m;i++)
{
    
    
    cin>>x;
    if(x==mp2[i])sum+=mp1[i];
}
cout<<sum<<endl;
}
return 0;
}

おすすめ

転載: blog.csdn.net/qq_41962612/article/details/114702164