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

【蓝桥杯】15届java研究生组E砍柴

一、思路

经典动态规划题目,主要分为两个大步骤:

1.提前计算出范围内的所以质数

2.提前设置dp[1]=0(初始化就为0,不用显式声明),dp[2]=1,然后逐个向后规划,规划过程为从最小的质数开始砍,直到砍完对方必输(为0)即可将当前设为先手必赢,直到砍到负数则不存在先手能赢的情况,即先手必输。

二、记忆

1.动态规划的思路

2.由于蓝桥杯采用连续多个输入,所以我们可以提前预处理好所有的的质数/砍数情况,后面就只用访问数组即可

3.质数检查代码

private static boolean isPrime(int num) {
		if(num<=1) {
			return false;
		}else if(num ==2) {//2是唯一的偶质数
			return true;
		}else if(num%2 == 0) {//偶数必然不是质数
			return false;
		}else {
			for(int i =3;i*i<=num;i=i+2) {
				if(num%i==0) return false;
			}
		}
		return true;
	}

三、代码

public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		ArrayList<Integer> prime = new ArrayList(); 
		
		for(int i =2;i<100001 ;i++) {//列出所有质数
			if(isPrime(i)) {
				prime.add(i);
				//System.out.println(i);
			}
		}
		int[] dp = new int[100001];//dynamic plan
		//dp[1]=0;  //默认就为0了,不用显式声明
		dp[2]=1;
		//动态规划,先手可以赢则返回1,不能赢则返回0
		for(int i = 3;i<100001;i++) {
			for(int j = 0 ; j < prime.size();j++) {
				int temp = i-prime.get(j);//千万注意关键变量的使用,这里一开始又用成i了
				if(temp<0) {
					//dp[i]=0;//已经无法找到可以先手砍的情况
					break;
				}
				if(dp[temp]==0) {//说明存在先手赢的情况,当前i置为必赢1
					dp[i]=1;
					break;
				}
			 }
		}
		int n  = in.nextInt();
		for(int i=0;i<n;i++) {
			System.out.println(dp[in.nextInt()]==1?1:0);
		}
	}
	
	
	private static boolean isPrime(int num) {
		if(num<=1) {
			return false;
		}else if(num ==2) {//2是唯一的偶质数
			return true;
		}else if(num%2 == 0) {//偶数必然不是质数
			return false;
		}else {
			for(int i =3;i*i<=num;i=i+2) {
				if(num%i==0) return false;
			}
		}
		return true;
	}

相关文章:

  • UIMeter-UI自动化软件(产品级)
  • 2025前端面试题
  • C++中std::move()的正确使用相关例子
  • C语言个人笔记
  • 前端面试总结3
  • Lumion 与 Enscape 怎么选?附川翔云电脑适配指南
  • 在3ds Max中视口显示为黑色或深灰色
  • leetcode68.左右文本对齐
  • 《DeepSeek RAG 增强检索知识库系统》Ollama RAG 知识库上传、解析和验证之四
  • mysql 禁止 读 某个 表
  • 第18章:基于Global Context Vision Transformers(GCTx_unet)网络实现的oct图像中的黄斑水肿和裂孔分割
  • 【Audio开发三】音频audio中帧frameSize ,周期大小periodsize,缓冲区buffer原理详解以及代码流程分析
  • 《嵌入式开发实战:基于Linux串口的LED屏显系统设计与实现》
  • Clickhouse试用单机版部署
  • 【完整可用】使用openhtmltopdf生成PDF(带SVG)
  • 策略模式结合模板方法模式
  • Go语言入门-反射4(动态构建类型)
  • PyCharm Community社区版链接WSL虚拟环境
  • 【笔记ing】AI大模型-01大模型基础综述
  • 医学科研工作者的AI助手:高效生成文献结构图和实验流程图
  • 做海报的简易网站/灰色词排名推广
  • 统一开发平台/seo合作
  • 国家公安网查网站备案/合肥网络seo
  • 做网站开发用哪种语言好/百度搜索榜单
  • 国外建站vps/东莞做网站最好的是哪家
  • 政府网站建设管理意见/百度搜索引擎排名规则