牛客NC21312

题目描述
一家神秘餐馆准备开放N天,牛牛 和 牛妹听到这个消息后,准备尽可能多的一起去吃午饭

餐馆有M道菜,牛牛和牛妹每次来只允许点一道菜,如果在第i天买了第j道菜
那么第i+7天也只能买第j道菜
第i天第j道菜的价格为price[i][j]
‘0’-'9’代表0-9美元
‘A’-'Z’代表10-35美元
‘a’-'z’代表36-61美元

牛牛和牛妹一共只有budget美元,请问他们最多可以吃几天的午饭
输入描述:
第一行输入3个整数n,m,budget (1 ≤ n ≤ 50, 1 ≤ m ≤ 50, 0 ≤ budget ≤ 10000)
接下来n行每行输入一个字符串,包含m个字符
第i行的第j个字符表示第i天第j道菜的价格
输出描述:
输出一个整数
示例1
输入
7 2 13
26
14
72
39
32
85
06
输出
5

#include<iostream>
#include<string>
using namespace std;
int main(){
	int n,m,budget;
	string q;
	int buy[55];   //记录第i天吃的第j个菜 
	int price[55][55];
	int dp[55][55];
	while(cin>>n>>m>>budget)
	{
		for(int i=1;i<=n;i++){
			cin>>q;//输入字符串 
			for(int j=1;j<=m;j++){//将字符串中的价格拆出来存入price 
				if(q[j-1]<='9'&&q[j-1]>='0'){
					price[i][j]=q[j-1]-'0';
				}
				else if(q[j-1]<='z'&&q[j-1]>='a'){
					price[i][j]=q[j-1]-'a'+36;
				}
				else if(q[j-1]<='Z'&&q[j-1]>='A'){
					price[i][j]=q[j-1]-'A'+10;
				}
			}
		}
		//根据price数组计算sj数组 
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				if(i>7){
					dp[i][j]=price[i][j]+dp[i-7][j];
				}
				else dp[i][j]=price[i][j];
			}
		}
		for(int i=1;i<=n;i++){
			int min=666666;
			if(i>7){
				budget+=dp[i-7][buy[i-7]];
			}
			for(int j=1;j<=m;j++){
				if(dp[i][j]<min){
					min=dp[i][j];
					buy[i]=j; //记录第i天吃的第j道菜 
				} 
			}
			budget-=min;
			if(budget<0){
				cout<<i-1<<endl;
				break;
			}
		} 
		if(budget>=0){
			cout<<n<<endl;
		}	
	}
	return 0;
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值