知识点:输入输出
做法
#include<iostream>
#include<vector>
using namespace std;
struct T{
int score;
int ans;
};
int main(){
int nums,numt;
T t[105];
cin>>nums>>numt;
vector <int> v[nums];
for(int i=0;i<numt;i++){
cin>>t[i].score;
}
for(int i=0;i<numt;i++){
cin>>t[i].ans;
}
int now;int sum=0;
for(int i=0;i<nums;i++){
for(int j=0;j<numt;j++){
cin>>now;
v[i].push_back(now);
}
}
for(int i=0;i<nums;i++){
sum=0;
for(int j=0;j<numt;j++){
if(v[i][j]==t[j].ans){//序号是j不是i
sum+=t[j].score;
}
}
cout<<sum<<endl;
}
}
优化
输入后直接运算,无需用额外的向量存储输入
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m, temp;
scanf("%d%d", &n, &m);
vector<int> score(m), ans(m);
for(int i = 0; i < m; i++)
scanf("%d", &score[i]);
for(int i = 0; i < m; i++)
scanf("%d", &ans[i]);
for(int i = 0; i < n; i++) {
int total = 0;
for(int j = 0; j < m; j++) {
scanf("%d", &temp);
if(temp == ans[j])
total += score[j];
}
printf("%d\n", total);
}
return 0;
}
补充 cin和scanf 的区别
cin的实时性差,因为使用了缓冲区,满了才刷新
#include <iostream>
#include <vector>
#include<stdio.h>
using namespace std;
int main() {
int i;
cout<<'a';
cin>>i;
cout<<'b';
}
这个例子来源其它博客 自己实践了无效:是说只有输入i后a才会输出