`
抛出异常的爱
  • 浏览: 628214 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

拳皇连招

阅读更多
从列表中找到录入的后N位
class KOFTest {
	@Test
	public final void testKoofFindOne() {
		KOF kof = new KOF(Arrays.asList("ABCD"));
		String koof = kof.koof("ABC");
		Assert.assertEquals("ABCD", koof);
	}
}


public class KOF {
	private static final int KEYLEN = 3;
	static List<String> list = null ;
	
	public KOF(List<String> asList) {
		this.list = asList;
	}

	public String koof(String str){
		for(String s : list){
//			System.out.println(str.substring(str.length()-3));
//			System.out.println(s.startsWith("ABC"));
			if(s.startsWith(str.substring(str.length()-KEYLEN))){
				return s;
			}			
		}

		
		return "";
	}

}



结束条件
找到第一个可以使用的串
	
	@Test
	public final void testKoofFindNone() {
		KOF kof = new KOF(Arrays.asList("ABCD"));
		String koof = kof.koof("ABE");
		Assert.assertEquals("ABE", koof);
	}
	@Test
	public final void testKoofFindOne() {
		KOF kof = new KOF(Arrays.asList("ABCD"));
		String koof = kof.koof("ABC");
		Assert.assertEquals("ABCD", koof);
	}
	@Test
	public final void testKoofFindTwo() {
		KOF kof = new KOF(Arrays.asList("ABCD","BCDF"));
		String koof = kof.koof("ABCD");
		Assert.assertEquals("ABCDF", koof);
	}

	public String koof(String str){
		List<String> select = new ArrayList<String>();
		for(String s : list){
			System.out.println(str.substring(str.length()-3));
			if(s.startsWith(str.substring(str.length()-3))){
				select.add(s);
			}			
		}
		System.out.println(select);		
		for(String s  : select){
			return str+s.substring(s.length()-1);
			
		}
		
		return str;
	}
}




底归
	@Test
	public final void testKoofFindNone() {
		KOF kof = new KOF(Arrays.asList("ABCD"));
		String koof = kof.koof("ABE");
		Assert.assertEquals("ABE", koof);
	}
	@Test
	public final void testKoofFindOne() {
		KOF kof = new KOF(Arrays.asList("ABCD"));
		String koof = kof.koof("ABC");
		Assert.assertEquals("ABCD", koof);
	}
	@Test
	public final void testKoofFindTwo() {
		KOF kof = new KOF(Arrays.asList("ABCD","BCDF"));
		String koof = kof.koof("ABCD");
		Assert.assertEquals("ABCDF", koof);
	}
	
	@Test
	public final void testKoofFindTree() {
		KOF kof = new KOF(Arrays.asList("ABCD","BCDE","CDEF"));
		String koof = kof.koof("ABCD");
		Assert.assertEquals("ABCDEF", koof);
	}

	public String koof(String str){
		List<String> select = new ArrayList<String>();
		for(String s : list){
			System.out.println(str.substring(str.length()-3));
			if(s.startsWith(str.substring(str.length()-3))){
				select.add(s);
			}			
		}
		for(String s  : select){
			return koof(str+s.substring(s.length()-1));
			
		}		
		return str;
	}


选择最长路线
	@Test
	public final void testKoofFindNone() {
		KOF kof = new KOF(Arrays.asList("ABCD"));
		String koof = kof.koof("ABE");
		Assert.assertEquals("ABE", koof);
	}
	@Test
	public final void testKoofFindOne() {
		KOF kof = new KOF(Arrays.asList("ABCD"));
		String koof = kof.koof("ABC");
		Assert.assertEquals("ABCD", koof);
	}
	@Test
	public final void testKoofFindTwo() {
		KOF kof = new KOF(Arrays.asList("ABCD","BCDF"));
		String koof = kof.koof("ABCD");
		Assert.assertEquals("ABCDF", koof);
	}
	
	@Test
	public final void testKoofFindThree() {
		KOF kof = new KOF(Arrays.asList("ABCD","BCDE","CDEF"));
		String koof = kof.koof("ABCD");
		Assert.assertEquals("ABCDEF", koof);
	}
	
	@Test
	public final void testKoofFindTree() {
		KOF kof = new KOF(Arrays.asList("ABCD","BCDF","BCDE","CDEF"));
		String koof = kof.koof("ABCD");
		Assert.assertEquals("ABCDEF", koof);
	}
	public String koof(String str){
		List<String> select = new ArrayList<String>();
		for(String s : list){
			System.out.println(str.substring(str.length()-3));
			if(s.startsWith(str.substring(str.length()-3))){
				select.add(s);
			}			
		}
		String max = str;
		for(String s  : select){
			String temp =  koof(str+s.substring(s.length()-1));
			if(max.length()<temp.length()){
				max=temp;
			}
			
		}		
		return max;
	}


看一下是否大连招.
public String koof(String str){
		List<String> select = new ArrayList<String>();
		if(str.endsWith("EOF")){
			return str;
		}
		for(String s : list){
			if(s.startsWith(str.substring(str.length()-3))){
				select.add(s);
			}			
		}
		String max = str;
		for(String s  : select){
			String nextKey = str+s.substring(s.length()-1);
			if(str.indexOf(s.substring(1))>=0){
				return str+"EOF";
			}
			String temp =  koof(nextKey);
			if(max.length()<temp.length()){
				max=temp;
			}
			
		}		
		return max;
	}
	@Test
	public final void testKoofFindNone() {
		KOF kof = new KOF(Arrays.asList("ABCD"));
		String koof = kof.koof("ABE");
		Assert.assertEquals("ABE", koof);
	}
	@Test
	public final void testKoofFindOne() {
		KOF kof = new KOF(Arrays.asList("ABCD"));
		String koof = kof.koof("ABC");
		Assert.assertEquals("ABCD", koof);
	}
	@Test
	public final void testKoofFindTwo() {
		KOF kof = new KOF(Arrays.asList("ABCD","BCDF"));
		String koof = kof.koof("ABCD");
		Assert.assertEquals("ABCDF", koof);
	}
	
	@Test
	public final void testKoofFindThree() {
		KOF kof = new KOF(Arrays.asList("ABCD","BCDE","CDEF"));
		String koof = kof.koof("ABCD");
		Assert.assertEquals("ABCDEF", koof);
	}
	
	@Test
	public final void testKoofFindTree() {
		KOF kof = new KOF(Arrays.asList("ABCD","BCDF","BCDE","CDEF"));
		String koof = kof.koof("ABCD");
		Assert.assertEquals("ABCDEF", koof);
	}
	
	@Test
	public final void testKoofFindRound() {
		KOF kof = new KOF(Arrays.asList("ABCD","BCDA","CDAB","DABC"));
		String koof = kof.koof("ABCD");
		Assert.assertEquals("ABCDABEOF", koof);
	}
分享到:
评论
8 楼 抛出异常的爱 2010-11-26  
蔡华江 写道
挨批了,,我。。 
怎么来说呢,个人感觉这个题目并不是很难,当然实现起来另说了。

我以为这个代码还是好懂的,其是我只是认为文字的东西少了点,要是能直接给人思路就好了。(我是不是太啥了点)
所以我认为里面有四个字“最大路径”能抵上所有的junit测试了。。。

算法都还给老师了。。。

1.从列表中找到 以 XXX 结尾的所有选择
2. 结束条件
找到第一个可以使用的串
(当然原题 义不是这样的)
3.底归
找到所有可能性
4.选择最长路线
把所有可能性长度最大的那种保留下来
5.看一下是否大连招.
如果字串存在重复那么这个会一直循环下去.

每次变型都有简单的测试用例.
7 楼 蔡华江 2010-11-26  
挨批了,,我。。 
怎么来说呢,个人感觉这个题目并不是很难,当然实现起来另说了。

我以为这个代码还是好懂的,其是我只是认为文字的东西少了点,要是能直接给人思路就好了。(我是不是太啥了点)
所以我认为里面有四个字“最大路径”能抵上所有的junit测试了。。。

算法都还给老师了。。。
6 楼 抛出异常的爱 2010-11-26  
cupid04 写道
蔡华江 写道
楼主写的代码蛮好看的,就是说明太少了,看得累。。


某天,某程序员写了关于某个功能的代码,洋洋洒洒几千行,老板看到后说,小伙子,干得不错,这么短时间能够写出这么多代码。小伙子说,再给我一个月,我可以弄到几百行。老板脸黑了。。。
然后不久的一天,这个人被炒了....

代码不多.
就这么二十几行
想看直接看懂有点小难

但真的有心看
顺着我的例子抄一遍.
我想应该能看的懂.

说明真的一点都不少.....
楼上两人我不是真对你们俩.
public String koof(String str){  
        List<String> select = new ArrayList<String>();  
        if(str.endsWith("EOF")){  
            return str;  
        }  
        for(String s : list){  
            if(s.startsWith(str.substring(str.length()-3))){  
                select.add(s);  
            }             
        }  
        String max = str;  
        for(String s  : select){  
            String nextKey = str+s.substring(s.length()-1);  
            if(str.indexOf(s.substring(1))>=0){  
                return str+"EOF";  
            }  
            String temp =  koof(nextKey);  
            if(max.length()<temp.length()){  
                max=temp;  
            }  
              
        }         
        return max;  
    } 
 
5 楼 cupid04 2010-11-26  
蔡华江 写道
楼主写的代码蛮好看的,就是说明太少了,看得累。。


某天,某程序员写了关于某个功能的代码,洋洋洒洒几千行,老板看到后说,小伙子,干得不错,这么短时间能够写出这么多代码。小伙子说,再给我一个月,我可以弄到几百行。老板脸黑了。。。
然后不久的一天,这个人被炒了....
4 楼 leon_a 2010-10-11  
抛出异常的爱 写道
引用
问答题似乎题目都蛮长的。最后一道讲的是KOF哦。题目大概是:
玩过KOF(拳皇)的人都知道,玩的时候会连招是比较强的(polaris也玩过,不过不会连招,呵呵)。题目的大概意思是:每招用一个大写字母表 示,如ABC...Z,现给定n个连招公式:S→T,其中S长度为m,T的长度为1。在前m招的时候可以随便连,但m+1招后就必须遵循连招公式。现在要 写一个算法,计算最长连招的长度;如果可以无限连招,则返回def。1≤n,m≤100
给了一个例子:n=4,m=3,连招公式为:ABC→C,ABC→D,CCA→A,BCA→B(最后一个连招公式忘了,记在纸上落在住处了,晚上改 改,不过应该不影响理解)。连招公式的意思是:A、B、C可以连出C,也可连出D,C、C、A可以连出A,B、C、A、可以连出B。这时候可以得到最长连 招公式:ABC→C→A→A,即最长连招公式长度为6。
题目要求给出算法思想并结合一定的伪码。


代码真没多少.....
大多数看到的是测试.....

楼主的代码我看懂了。。。。我根据图论也写了一个
3 楼 leon_a 2010-10-11  
http://leon-a.iteye.com/blog/779558
2 楼 抛出异常的爱 2010-09-29  
引用
问答题似乎题目都蛮长的。最后一道讲的是KOF哦。题目大概是:
玩过KOF(拳皇)的人都知道,玩的时候会连招是比较强的(polaris也玩过,不过不会连招,呵呵)。题目的大概意思是:每招用一个大写字母表 示,如ABC...Z,现给定n个连招公式:S→T,其中S长度为m,T的长度为1。在前m招的时候可以随便连,但m+1招后就必须遵循连招公式。现在要 写一个算法,计算最长连招的长度;如果可以无限连招,则返回def。1≤n,m≤100
给了一个例子:n=4,m=3,连招公式为:ABC→C,ABC→D,CCA→A,BCA→B(最后一个连招公式忘了,记在纸上落在住处了,晚上改 改,不过应该不影响理解)。连招公式的意思是:A、B、C可以连出C,也可连出D,C、C、A可以连出A,B、C、A、可以连出B。这时候可以得到最长连 招公式:ABC→C→A→A,即最长连招公式长度为6。
题目要求给出算法思想并结合一定的伪码。


代码真没多少.....
大多数看到的是测试.....
1 楼 蔡华江 2010-09-29  
楼主写的代码蛮好看的,就是说明太少了,看得累。。

相关推荐

    拳皇97键盘出招表

    游戏中的角色众多,每个角色都有独特的技能和连招,掌握这些技能对于提升游戏水平至关重要。以下是对《拳皇97键盘出招表》中提到的部分关键技能的详细解读。 ### 一、基本操作 在《拳皇97》中,键盘上的按键分别...

    KOF97-拳皇系列GIF动态图大合集.rar

    在《拳皇97》这款经典的格斗游戏中,每个角色都有自己独特的技能和连招,这些在GIF动态图中得到了生动的展现。通过这些动态图,我们可以深入理解每个角色的动作设计和攻击模式。例如,草剃京的“大蛇薙”、八神庵的...

    闪翼拳皇1.91.rar

    游戏中的角色形象鲜明,每个角色都有自己独特的技能和连招,让玩家在游戏中体验到多样化的战斗策略。角色的动作设计流畅,打击效果逼真,无论是出拳、踢腿还是释放必杀技,都能带给玩家强烈的视觉冲击和操作反馈,...

    拳皇格斗游戏特效gif素材

    例如,“d06(5).gif”可能代表一种连续攻击或连招的动作序列,而“c08.gif”可能是一个角色发动特殊技能时的炫酷光效。这些gif图像通过动态的形式展示出游戏中的打击感和能量爆发,使玩家感受到强烈的战斗冲击。 ...

    手机游戏拳皇争霸源代码

    例如,游戏中的角色如何响应玩家的操作,如何计算伤害,如何实现连招和必杀技等。 其次,图形渲染部分是让游戏画面生动起来的关键。这部分源代码可能涉及到2D或3D图形处理,包括角色模型、场景构建、特效生成等。...

    97拳皇键盘出招表带图.doc

    这些出招表对于熟悉和精通《97拳皇》的玩家来说至关重要,它们不仅列出了角色的基本攻击,还包括了复杂的连招和必杀技,使得玩家可以更好地体验游戏的深度和策略性。通过反复练习和掌握这些出招表,玩家可以提升游戏...

    quanhuang.rar_拳皇_拳皇c++

    通过VB的延时函数(如`Sleep`)控制按键的间隔,可以实现这一连招的自动化。 5. **扩展其他技能**:一旦掌握了模拟按键的基础,你可以根据拳皇中其他角色的技能,调整按键组合和时间间隔,实现其他角色的技能模拟。...

    kof98combo版1

    【描述】"kof98combo版1 最好玩的BT98",这里的“BT98”可能是对原版《拳皇98》的一种非正式称呼,可能含有“变态”或“特别”的含义,暗示这个版本的游戏在某些方面有别于原版,例如角色能力调整、连招系统强化等。...

    KOF97出招表***********

    《KOF97》是一款经典的格斗游戏,以其丰富的角色阵容、复杂多变的连招技巧和高度竞技性而闻名。下面将详细介绍部分角色的主要技能及其操作方法。 ### 基本术语解释 - **L**: 轻拳/轻脚 - **M**: 中拳/中脚 - **H**:...

    Kof97,98.zip

    游戏在角色平衡性上做了大量调整,每个角色都有其独特的攻击模式和连招,使得竞技性更强。同时,98版还加入了“紧急回避”和“超级取消”等新机制,进一步提升了游戏的可玩性。《拳皇98》在国内外格斗游戏圈内享有极...

    C/C++ 拳皇争霸

    //显示所有人物数据 void Chooseopponent();//选择对手 void Chooseplayer(int i);//选择角色 void vs(int i,int j);//PK void Attack(int i,int j);//攻击 void recovery(int i,int j);//防御 void Energy(int i,...

    KOF97KOF94-2002PC端经典怀旧游戏,无需安装解压缩即玩

    总的来说,这个压缩包中的《拳皇》系列游戏,不仅包含了格斗游戏的经典元素,如连招、必杀技和组合技,还体现了SNK在游戏设计上的不断进步和创新。对于喜欢格斗游戏的玩家来说,这是一个不容错过的经典收藏,只需...

    非常好玩的格斗绝版游戏.zip

    此外,还有如特瑞·博加德、二阶堂红丸等经典角色,他们的每一个动作和连招都经过精心设计,旨在提供深度的游戏体验。 游戏的核心玩法是1对1的格斗对决,玩家需要通过组合按键来发动各种攻击、防御和特殊技。它采用...

    基于directx局域网多人在线格斗游戏

    本游戏结合了拳皇的华丽连招和洛克人的道具系统,为玩家提供了全新的格斗体验。 4. **多人在线**: 多人在线功能意味着玩家可以同时与多个对手进行游戏,这需要服务器端的稳定支持。在网络编程中,需要处理网络同步...

    游戏的ROM.rar_游戏

    它以其丰富的角色选择、独特的连招系统和竞技性吸引了大量玩家。在这个RAR压缩文件中,包含的ROM可能用于在电脑上使用MAME(Multiple Arcade Machine Emulator)或其他类似的街机游戏模拟器来游玩。 为了运行这些...

    kof97第2部分,共2部分

    7. **游戏技巧与策略**:《拳皇97》包含多种角色,每个角色都有独特的招式和连招。深入理解每个角色的技能和战术是提升游戏水平的关键。玩家可以通过观看专业比赛录像、阅读攻略或在线交流来学习和掌握这些技巧。 8...

    quanwang97.zip

    4. 战斗系统:拳皇的精髓在于其复杂的战斗机制,包括连招、防御、必杀技等。源代码将揭示这些功能背后的逻辑,如伤害计算、技能判定等。 5. 音乐与图片资源:除了源代码,压缩包还可能包含游戏的音效和图形资源。这...

    KOF97连续技.txt

    - 角色在MAX状态下施展出的连续技不仅威力巨大,而且还能与其他技能进行组合,形成更为复杂的连击。 #### 具体连续技示例 文档中列举了一些具体的连续技示例,下面选取几个例子进行详细解析: 1. **基础连续技...

    kof.rar_Allegro_KOF_King-of-Fighters_dev c_king of fighters

    7. 游戏逻辑:KOF中的战斗系统、能量条、连招等复杂规则需要通过编程实现。开发者需要深入理解游戏机制,并将其转化为可执行的代码。 通过上述知识点的学习和实践,开发者可以逐步构建一个功能完备的2D格斗游戏。...

Global site tag (gtag.js) - Google Analytics