`
抛出异常的爱
  • 浏览: 629413 次
  • 性别: 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

    通过GIF动态图,我们可以观察到每一个微妙的攻击动作,每一个复杂的连招。例如,主角草剃京的“大蛇薙”不仅是视觉上的华丽展示,也象征着他强大的力量和决心。而八神庵的“鬼烧”则是幽暗与破坏力的结合体,通过...

    闪翼拳皇1.91.rar

    它拥有着一个庞大的角色库,每个人物都有自己独特的背景故事、技能和连招体系。这些角色既有来自经典拳皇系列的旧面孔,也有闪翼原创的新角色。每个角色的动作设计都力图还原现实格斗中的流畅与力度,使得每一次出拳...

    拳皇格斗游戏特效gif素材

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

    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在游戏设计上的不断进步和创新。对于喜欢格斗游戏的玩家来说,这是一个不容错过的经典收藏,只需...

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

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

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

    新手玩家可以迅速上手游戏,而资深玩家则可以通过对按键时机的精准掌控来实现各种连招和战术,使得每场对决都充满了变数和挑战。 除了游戏性,《拳皇Wing》的视觉和听觉效果同样令人印象深刻。游戏角色的立绘和动作...

    游戏的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