1039 到底买不买

Posted CSU迦叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1039 到底买不买相关的知识,希望对你有一定的参考价值。

很典型的散列题,对于shop和eva有的珠子(即字符),各开一个128长度的整形散列表计数,将字符作为下标读入。

然后从0~127进行遍历,看每个下标下两个散列表的数量,如果有shop<eva说明不买,但是遍历仍然要继续,因为最后要输出所缺珠子的总数。可以在遍历前设置一个布尔变量isEnough看珠子够不够,设置一个整形变量lessNum计算缺少珠子的数量。

如果最后不买,输出lessNum,如果买,那么商店珠子长度减去伊娃珠子长度即为多出的珠子数量。

AC代码

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;

const int maxn = 1010;
const double eps = 1e-3;


int main(){
	
	char shopStr[maxn];
	char evaStr[maxn];
	
	scanf("%s",shopStr);
	scanf("%s",evaStr);
	
	int shopLen = strlen(shopStr);
	int evaLen = strlen(evaStr);
	
	int shopTable[128] = {0};
	int evaTable[128] = {0};
	
	for(int i=0;i<shopLen;i++){
		shopTable[shopStr[i]]++;
	}
	
	for(int i=0;i<evaLen;i++){
		evaTable[evaStr[i]]++;
	}
	
	bool isEnough = true;
	int lessNum = 0;
	for(int i=0;i<128;i++){
		if(evaTable[i]>shopTable[i]){
			isEnough = false;
			lessNum += (evaTable[i]-shopTable[i]);
		}
	}
	
	if(isEnough)printf("Yes %d\\n",shopLen-evaLen);
	else printf("No %d\\n",lessNum);

	
	return 0;
}

以上是关于1039 到底买不买的主要内容,如果未能解决你的问题,请参考以下文章

1039 到底买不买

1039 到底买不买 (20分)

1039 到底买不买

PAT乙级1039 到底买不买 (20 分)

1039. 到底买不买(20)

1039 到底买不买