算法设计(动态规划):新水果取名(JAVA代码实现及题目分析)

使用动态规划算法,解决两种水果杂交后的新水果取名问题,要求新名字包含原有水果字母且尽可能短。输入示例:apple peach,输出示例:appleach。通过建立状态表求最长公共子序列,实现代码附带详细注释。
摘要由CSDN通过智能技术生成

新水果起名问题

题目内容:

两种水果杂交出一种新水果,现在给新水果取名,要求这个名字中包含以前两种水果的字母,且名字尽量短,即:以前的水果名字arr1、arr2是新水果名arr的子序列,使用动态规划的思想设计算法得到新水果名arr。

输入格式:

以空格分开两个水果的名字

输出格式:

新水果的名字

输入样例:

apple peach

输出样例:

appleach

这个沙雕问题浪费了我三个小时(NMD,WSM),事实证明写算法题不能乱想和省事(泪目)。
这里就不详细说我写这个题想偏的思路了,直接给出最直接的思路:按照DP的求最长公共子序列的算法作出它的状态表,然后直接根据状态表进行相对应的输出。其他该注意的点我基本上都有在代码里写好注释,我的代码中有些在本题中无用的代码我也标注了出来。

具体实现代码如下:

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) 
	{
		Scanner input=new Scanner(System.in);
		String str1=input.next();
		String str2=input.next();
		cal(str1,str2);
	}
	
	public static void cal(String s
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值