当前位置: 首页 > article >正文

洛谷 P1722 矩阵 II C语言 记忆化搜索

题目:

https://www.luogu.com.cn/problem/P1722

我们按照案例画一下

我们会发现,会出现重复的子结构。

代码如下:

#include<iostream>
using namespace std;
int mem[300][300];
int n;
int f[305][305]; 
int dfs(int x,int red,int black)//x为当前格子数量,red,black分别表示为红球和黑球的数量 
{
	if(black > red || red > n)
	return 0;
	
	if(x == 2*n)
	{
		if(red == n)
		return 1;
		else
		return 0;
	}
	
	if(mem[red][black])
	return mem[red][black];
	
	int t = 0;
	t = (dfs(x+1,red+1,black)+dfs(x+1,red,black+1))%100; 
	mem[red][black] = t;
	return t;
}
int main(void)
{
	cin >> n;
	
	int ans = dfs(0,0,0);
	cout << ans;

	return 0; 
}

动态规划:

#include<iostream>
using namespace std;
int n;
int f[305][305]; 
int main(void)
{
	cin >> n;
	

	//可以转化成有当前有i个格子有几个红色球 f[i][red]a
    f[1][1] = 1;
	for(int i = 2 ; i <= 2*n ; i++)
	{
		for(int red = (i+1)/2 ; red <= i; red++)
		{
			f[i][red] = (f[i-1][red-1] + f[i-1][red])%100;
		}
	}
	cout << f[2*n][n];
	return 0; 
}

红球的范围是生成可能和不可能的答案,但是动态规划是选择最优子结构,会筛选不可能的答案,并且不能能的答案值是0.


http://www.kler.cn/a/407486.html

相关文章:

  • leetcode top100中的30道简单和中等难度的题
  • 洛谷 P1722 矩阵 II C语言 记忆化搜索
  • UVM 验证方法学之interface学习系列文章(七)高级 《bind 操作》(4)级联
  • EWA Volume Splatting
  • mysql的优化
  • Sobey融媒体 硬编码漏洞复现
  • 对比学习——moco
  • Android 工厂设计模式的使用:咖啡机,可以做拿铁,可以做美式等等。
  • SCTransNet验证测试
  • 解决报错:rror: error:0308010C:digital envelope routines::unsupported
  • 利用软件实现发票的批量查验,并自动截图保存 91发票查验助手
  • 【C++】关于指针Free和链表循环释放的问题
  • websocket消息的实现
  • 【公开笔记】小白学习vue3完整版
  • 智能体来了:构建用于具有结构化输出的内容审核的智能 AI Agent 智能体
  • 【Isaac Sim】加载自带模型或示例时报 Isaac Sim is not responding
  • 联想ThinkServer服务器主要硬件驱动下载
  • 【单片机基础】如何选择合适的低功耗单片机
  • YOLOv11融合[NeurlS2022]递归门控卷积gnconv模块及相关改进思路
  • 10 —— Webpack打包模式
  • Linux使用经验记录
  • 韦东山hal库 使用光敏传感器控制蜂鸣器
  • GoZero对接GPT接口的设计与实现:问题分析与解决
  • 深入探索:JavaScript中实现乱序函数的艺术
  • 电脑禁用U盘的四种简单方法(电脑怎么阻止u盘使用)
  • HDR视频技术之三:色度学与颜色空间