c++ 数组下标是字符串的处理

蓝桥杯中不可以使用c++标准的库函数 — 具体见这里

由于需要对string 进行计数等操作 而c++中数组下标只能是数字,所以我们需要用STL中的一个库函数 map
map<string , int> cnt;

例题:洛谷P1201

code

#include <iostream>
#include <map>
using namespace std;
map<string , int> cnt;  //相当于 cnt["dashabi"] = 250;
string name[12];
int n,num;
int main()
{
    
    
	cin>>n;
	for(int i=1;i<=n;i++){
    
    
		cin>>name[i];
	}
	for(int i=1;i<=n;i++){
    
    
		string s;int money,p;
		cin>>s>>money>>p; 
		if(p!=0)num = money/p;
		else num = 0;
		cnt[s] -= num*p;
		for(int j=1;j<=p;j++){
    
    
			cin>>s;
			cnt[s]+=num;
		}
	}
	for(int i=1;i<=n;i++)
		cout<<name[i]<<" "<<cnt[name[i]]<<endl;
	return 0;
}

蓝桥杯国赛加油

猜你喜欢

转载自blog.csdn.net/zhimeng_LQ/article/details/109509119