UVa 10192 Vacation (DP&LCS)

本文介绍了一个用于匹配旅游地点的算法,通过比较用户输入的城市名称,该算法能够计算最多可以访问的城市数量。

10192 - Vacation

Time limit: 3.000 seconds 

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=114&page=show_problem&problem=1133


水。


完整代码:

/*0.019s*/

#include<bits/stdc++.h>
using namespace std;

char a[105], b[105];
int dp[105][105];

int main()
{
	int lena, lenb, i, j, cas = 0;
	while (gets(a), a[0] != '#')
	{
		gets(b);
		lena = strlen(a), lenb = strlen(b);
		memset(dp, 0, sizeof(dp));
		for (i = 0; i < lena; ++i)
			for (j = 0; j < lenb; ++j)
			{
				if (a[i] == b[j]) dp[i + 1][j + 1] = dp[i][j] + 1;
				else dp[i + 1][j + 1] = max(dp[i + 1][j], dp[i][j + 1]);
			}
		printf("Case #%d: you can visit at most %d cities.\n", ++cas, dp[lena][lenb]);
	}
	return 0;
}

```java String lcs_jydljl = sub.getLcs_jydljl(); // 产品标准代码 if (lcs_jydljl != null && lcs_jydljl.contains("GB")) { data.put("cpbz", "0"); } else if (lcs_jydljl != null && lcs_jydljl.contains("YY")) { data.put("cpbz", "1"); } else { data.put("cpbz", "2"); } ``` ### 解释: 这段 Java 代码的作用是根据字段 `lcs_jydljl`(产品标准代码)的内容,判断其是否包含特定的关键字,并将对应的结果放入一个名为 `data` 的 `Map<String, Object>` 或 `Map<String, String>` 中,键为 `"cpbz"`,表示“产品标准”的编码。 --- #### 逐行解析: ```java String lcs_jydljl = sub.getLcs_jydljl(); // 获取产品标准代码 ``` - 从对象 `sub` 中获取属性 `lcs_jydljl`(可能是数据库字段或业务字段),赋值给局部变量 `lcs_jydljl`。 - 注释说明这是“产品标准代码”。 ```java if (lcs_jydljl != null && lcs_jydljl.contains("GB")) { data.put("cpbz", "0"); } ``` - 判断:如果 `lcs_jydljl` 不为 `null`,并且它的字符串内容中 **包含子串 `"GB"`**(如 `"GB/T 12345"`、`"GB"`、`"非标GB"` 等),则: - 向 `data` 这个 Map 中放入键值对:`"cpbz" -> "0"`。 - 使用 `&&` 的短路特性:只有当 `lcs_jydljl != null` 成立时,才会执行后面的 `.contains("GB")`,避免空指针异常。 ```java else if (lcs_jydljl != null && lcs_jydljl.contains("YY")) { data.put("cpbz", "1"); } ``` - 如果前面的条件不满足(即没有 `"GB"`),再判断是否包含 `"YY"`。 - 若包含 `"YY"`(例如 `"YY 123"`、`"医药YY"`),则设置 `"cpbz"` 为 `"1"`。 - 同样做了 `null` 检查以保证安全。 ```java else { data.put("cpbz", "2"); } ``` - 如果既不包含 `"GB"`,也不包含 `"YY"`,则默认设置 `"cpbz"` 为 `"2"`。 - 这通常用于表示“其他”、“不适用”或“无标准”等情况。 --- ### 示例输入输出: | `lcs_jydljl` 值 | `data.get("cpbz")` | |-----------------------|--------------------| | `"GB/T 28001"` | `"0"` | | `"Q/XYZ 2024"` | `"2"` | | `"YY 0023"` | `"1"` | | `"GB and YY"` | `"0"`(优先匹配 GB)| | `null` | `"2"` | | `"企业标准"` | `"2"` | > 注意:由于使用了 `contains`,只要字符串中有 `"GB"` 就会命中第一条,即使它也包含 `"YY"`。 --- ### 总结逻辑: | 条件 | 输出值(cpbz) | |------------------------------|----------------| | 包含 `"GB"`(且不为 null) | `"0"` | | 不含 `"GB"` 但包含 `"YY"` | `"1"` | | 其他情况(包括 null) | `"2"` | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值