题解 | #吃糖果#dp + bfs

吃糖果

https://www.nowcoder.com/practice/72015680c32b449899e81f1470836097

本题可以使用动态规划dp加bfs实现,其实可以在草稿纸上罗列出情况,就可以发现出其中的规律了

动态规划dp

#include <iostream>

using namespace std;

const int N = 1e5 + 10;

int dp[N];

int convert(int n){
	if(n == 1)return 1;
	if(n == 2)return 2;
	
	dp[1] = 1;
	dp[2] = 2;
	
	for(int i = 3;i <= n;i ++){
		dp[i] = dp[i - 1] + dp[i - 2];
	}
	
	return dp[n];
}
int main(){
	int n;
	
	while(cin >> n){
		cout << convert(n) << endl;
	}
	return 0;
}

bfs实现

#include <iostream>
#include <queue>

using namespace std;

int n;
int ans = 0;

int bfs(int n){
	if (n == 1) return 1;
    if (n == 2) return 2;
    
	queue<int> myqueue;
	myqueue.push(n);
	
	while(myqueue.size()){
		int current = myqueue.front();
		// 如果消耗完糖果了,方案加一 
		if(current == 0){
			ans ++; 
		}
		myqueue.pop();
		for(int i = 0;i < 2;i ++){
			int next = current;
			if(i == 0){
				next = next - 1;
			}else if(i == 1){
				next = next - 2;
			}
			if(next < 0){
				continue;
			}
			myqueue.push(next);
			
		}
	}
	return ans;
}


int main(){
	while(cin >> n){
		cout << bfs(n) << endl;
	}	
	return 0;
}
#悬赏#
全部评论

相关推荐

LemontreeN:有的兄弟有的我今天一天面了五场,4个二面一个hr面
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务