2020.2月-寒假刷题记录

P1042 乒乓球(模拟)
题意:给定比赛分数,输出胜负比分。

首先考虑读入,按字符读入,然后存入数组中;
11分和21分进制处理方法相同,用函数处理;

其次考虑胜利的情况:一方分数大于11(21)而且比另一方高两分,
胜利后将积分清零。
最后考虑还可能剩一局的分数,输出即可。

void win(int x){
	int l = 0, r = 0, i = 1; 
	while(i <= n){
		if(ch[i] == 'W')	l ++;
		else 	r++;
		i++;
		if(l >= x || r >= x){
				if(abs(l-r) >= 2){
					cout << l << ":" << r << endl;
					l = 0; r = 0; 
				}
					
		}
		
	}
	cout << l << ":" << r << endl;
}

P1086 花生采摘(模拟,搜索)
dfs结合贪心思路:
考虑贪心每次从剩余的地点取出数目最大的,如果能走出去,说明可以采摘,就更新ans,
细节1:如果现在在路边,可以随意平移
细节2:取完得能走出去,算出需要的花费时间

dfs定义:在t时间内从x,y出发所能获得的最大花生数目

void dfs(int t, int x, int y){
	int maxx = -1;
	int mx, my;
	for(int i = 1; i <= m; i++)
		for(int j = 1; j <= n; j++){
			if(map[i][j] > maxx){
				maxx = map[i][j];
				mx = i;
				my = j;
			}
		}
	if(y == 0) y = my;
	if(!map[mx][my] || t <(abs(mx-x) + abs(my-y) + mx +1)) 
		return ;
	else{
		ans += map[mx][my];
		map[mx][my] = 0;
		dfs(t - abs(mx-x) - abs(my-y) - 1,mx, my);
	}
	
}
//
dfs(k,0,0);  //
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值