0 0

算法求教,ACM 题目指导10

题目:要求对任意一个字符串,通过加入若干字符使其对称
如abcda至少要插入两个字符,两个一下无法使其对称abdcdba,adbcdba
请求出需要插入的最少字符数


希望大家能给我出出主意,给点解决这个题目的思路!感激
2013年4月15日 09:19

7个答案 按时间排序 按投票排序

0 0

采纳的答案

	public static int symmetry(String source) {
		int length = source.length();
		int count = 0;
		int compareIndex = length - 1;
		for(int i = 0; i <= compareIndex; i++) {
			char c = source.charAt(i);
			char end = source.charAt(compareIndex);
			if(c == end) {
				compareIndex--;
				continue;
			} else {
				count++;
			}
		}
		return count;
	}

循环的地方改成:
for(int i = 0; i <= compareIndex; i++)
就可以满足了

2013年4月15日 10:25
0 0

	public static int symmetry(String source) {
		StringBuffer target = new StringBuffer(source);
		int length = source.length();
		int count = 0;
		int compareIndex = length - 1;
		for(int i = 0; i <= compareIndex; i++) {
			char c = source.charAt(i);
			char end = source.charAt(compareIndex);
			if(c == end) {
				compareIndex--;
				continue;
			} else {
				count++;
				target.insert(compareIndex + 1, c);
			}
		}
		System.out.println(target.toString());
		return count;
	}

2013年4月15日 11:00
0 0

提示:
定义一个计数的number=0。
然后一定是进行首尾比较。
做两个下标变量i,j.首是:i=0,尾是:j=n.
如果相等;i++,j--,判断条件是j>i
如果不等.i++,number++,j不变.
最终number应该就是最少字符数了吧.

2013年4月15日 10:35
0 0

	public static int symmetry(String source) {
		int length = source.length();
		int count = 0;
		int compareIndex = length - 1;
		for(int i = 0; i < length; i++) {
			char c = source.charAt(i);
			char end = source.charAt(compareIndex);
			if(c == end) {
				compareIndex--;
				continue;
			} else {
				count++;
			}
		}
		return count;
	}

测试了一下,觉得有些小问题,就是判断个数是否为奇数,如果奇数,count--。这个思路不对,应该去掉,并且用新的办法重新计算,等中午有空,再改造下

2013年4月15日 10:21
0 0

	public static int symmetry(String source) {
		int length = source.length();
		int count = 0;
		int compareIndex = length - 1;
		for(int i = 0; i < length; i++) {
			char c = source.charAt(i);
			char end = source.charAt(compareIndex);
			if(c == end) {
				compareIndex--;
				continue;
			} else {
				count++;
			}
		}
		if(count % 2 == 1) {
			count--;
		}
		return count;
	}

粗略的写了个,你测试下,与你的目标算法可有出入。我测试几个,基本上是正确的。

2013年4月15日 10:11
0 0

我的理解是递归做
abcda
1、首先判断第一个和最后一个是否一样
2、如果不一样 分两种情况 --> 最前  最后 插入字符 然后再递归(带上当前的插入的数量) 找下去  找到最后即可  这样就找到每种情况

3、优化 可以把找完的存到一个位置 然后其他递归每次找时和之前找到的进行匹配 如果大于就提前终止 不再找了

2013年4月15日 10:08
0 0

这个问题灰常简单:我们不知道该字符串的对称序号位于字符串的第几个字符,也就没有办法从中间字符一次对比来增加字符,换个思路,我们可以从开头和末尾来对比,倒数第一正数第一相同,依次对比倒数第二个和正数第二个;倒数第一正数第一不同则在开头或者末尾增加字符,然后再对比倒数第二个正数第二个......

2013年4月15日 10:02

相关推荐

    典型算法与ACM题目解析

    《典型算法与ACM题目解析》是一份深入探讨算法理论及实践应用的资源集合,主要针对ACM(国际大学生程序设计竞赛)中的常见问题进行详细解答。这份压缩包可能包含了多篇文档或代码,每一篇都针对一个或多个特定算法...

    算法导论作业ACM题目源代码

    《算法导论作业ACM题目源代码》是一个与编程竞赛相关的资源包,主要包含了ACM(国际大学生程序设计竞赛)的一些经典题目及其解决方案。这些源代码由算法导论这一课程的学员编写,旨在帮助学生深化对算法的理解和应用...

    ACM题目分类,ACM题目分类

    总的来说,ACM题目分类覆盖了计算机科学的多个核心领域,包括算法、数据结构、数学、字符串处理和逻辑推理等。通过深入学习和练习这些分类下的题目,不仅可以提升编程能力,还能培养良好的问题解决思维。对于参加ACM...

    自己搜集的ACM题目汇总

    ### ACM题目汇总知识点 #### 1. 华氏温度转换为摄氏温度 - **问题描述**:将用户输入的华氏温度值转换为摄氏温度,并输出结果。 - **核心算法**:利用公式 `C = (5/9) * (F - 32)` 进行计算,其中 `C` 表示摄氏...

    ACM题目&答案

    在ACM(国际大学生程序设计竞赛,International Collegiate Programming Contest)中,参赛者们需要解决一系列算法和逻辑问题。题目“ACM题目&答案”显然与这类竞赛有关,特别是涉及计算两个整数之和的问题。这类...

    典型算法与ACM题目解析(01)—寻找最大流的标号法.doc

    典型算法与ACM题目解析(01)—寻找最大流的标号法 本文档中,作者 dzf 介绍了 Ford-Fulkerson 算法,也称为寻找最大流的标号法,该算法用于解决网络流问题。该算法的核心思想是使用标号的方法不断寻找一个图上的可...

    ACM题目分类&训练题&算法课件(大连理工大学)

    这份来自大连理工大学的资源集合,包含了ACM题目分类、训练题以及算法课件,为参赛者提供了全面的学习和实践材料。 首先,我们来看《ACM题目分类.doc》。这份文档详细地梳理了ACM竞赛中常见的题目类型,可能包括但...

    2016年ACM常用算法总结

    从给定的文件信息中,可以提取到关于ACM常用算法的知识点。ACM国际大学生程序设计竞赛(ACM International Collegiate Programming Contest,简称ACM-ICPC)是大学生计算机程序设计竞赛中最为著名的赛事之一,强调的...

    ACM题目+大部分答案

    通过学习这些ACM题目和答案,你可以提高自己的算法思维和编程能力。可以深入理解不同算法的工作原理,学习如何优化代码以提高运行效率,同时还能掌握如何在实际问题中应用这些理论知识。此外,参与ACM训练也能培养...

    ACM 题目 主要是算法题

    在这个压缩包中,包含的是一系列 ACM 算法题目,这些题目是历年比赛的真实试题,具有很高的学习价值。 算法是计算机科学的基础,ACM 算法题目主要涵盖以下几大类知识点: 1. **排序与搜索**:快速排序、归并排序、...

    ACM程序设计大赛算法模板 ACM模板 一般编程问题

    ACM程序设计大赛算法模板 ACM模板 一般编程问题 【实例简介】 这是我整理所得,不代表是我写的、、对于有些参考没有标记的,欢迎你们提出我来修正!感谢那些浙大ACM的前辈!!! ACM程序设计大赛算法模板 ACM模板 ...

    acm题目归类,各类题目列举,集训手册csu

    ### ACM题目归类及集训手册关键知识点解析 #### 一、ACM国际大学生程序设计竞赛简介 **ACM国际大学生程序设计竞赛**(ACM International Collegiate Programming Contest, 简称ACM-ICPC)是一项全球性的大学生计算机...

    acm算法题目

    在ACM算法竞赛中,掌握各种算法和编程技巧至关重要。这些题目涵盖了不同的算法类型,可以帮助我们提升解决问题的能力和在比赛中取得好成绩。以下是针对给定题目内容的详细解析: 1. **神秘的三位数** (满分3分) 这...

    POJ各题算法分类和题目推荐 ACM必看

    POJ算法分类和题目推荐指南 本资源主要介绍了POJ(Online Judge)平台上各种算法分类和推荐题目,涵盖了动态规划、模拟、博弈等多种类型。以下是详细的知识点说明: 一、动态规划 动态规划是一种非常重要的算法...

    java做acm题目入门知识

    ### Java做ACM题目入门知识详解 #### 一、引言 ACM(Association for Computing Machinery)编程竞赛是一项国际性的编程赛事,旨在测试参赛者的算法设计、编程能力和问题解决技巧。Java作为一门强大的面向对象编程...

    acm递归算法总结竞赛

    在ACM(国际大学生程序设计竞赛)中,递归算法是一种常见的解决问题的方法,它通过函数自身调用自身来实现问题的解决。递归的核心在于找到基本情况(base case),即可以直接求解的问题,以及每次递归调用时问题规模...

    浙大ACM题目集.chm

    《浙大ACM题目集》是一个专为编程爱好者和参赛者设计的资源库,它包含了近千道英文编程题目,旨在帮助用户提升算法理解和编程技能。这个CHM文件是电子书格式,通常用于组织和存储大量的信息,便于用户离线查阅。下面...

    ACM题目大汇总

    ### ACM题目大汇总知识点 #### 图论与网络流入门题知识点概述 本篇文章汇总了一些经典的图论和网络流问题,并提供了对应的题目链接以及简要的解题思路。这些题目覆盖了多个方面,如最短路问题、生成树问题、连通性...

Global site tag (gtag.js) - Google Analytics