`
ol_beta
  • 浏览: 291398 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

由象棋中的“将”和“帅”位置引出的一个算法

阅读更多

 

1.问题描述:

假设中国象棋的棋盘上只有“将”和“帅”,这两个棋子。

根据象棋的规则,写出“将”和“帅”所有可能的合法位置。

要求只能声明一个变量。

 

2.建模

由棋盘上的布局可知,“将”和“帅”的运动范围在一个3×3

的格子里。

1——2——3

|       |       |

4——5——6

|       |       |

7——8——9

上面的模型模拟“将”或“帅”的所有可能位置,因为“将”和“帅”

不能同时在同一列,所以当“将”在1,4,7的位置时,“帅”在2,3,5,6,8,9位置。反之亦然。

下面用A代表“将”,用B代表“帅”来进行模拟。

 

public class Chess {
	
	/**
	 * 第一种方法
	 */
	public static void solutionA(){
		//包括不符合规则的情况,一共有81中情况
		int iCount=81;
		while(--iCount>0)
			//iCount/9%3表示列
			//iCount%9%3表示行
			if(iCount/9%3!=iCount%9%3)
				//输出符合规则的情况
				System.out.println("A="+(iCount/9+1)+" B="+(iCount%9+1));
	}
	/**
	 * 第二种方法
	 */
	public static void solutionB(){
		//定义一个类作为变量,C中可以用结构体表示
		class Position{
			//A的位置
			public int A;
			//B的位置
			public int B;
		}
		//声明一个变量
		Position p= new Position();
		for(p.A=1;p.A<=9;p.A++)
			for(p.B=1;p.B<=9;p.B++)
				if(p.A%3!=p.B%3)
					System.out.println("A="+p.A+" B="+p.B);
	}
	/**
	 * 测试
	 */
	public static void main(String[] args) {
		//测试方法A
		System.out.println("======第一种方法======");
		Chess.solutionA();
		//测试方法B
		System.out.println("======第二种方法======");
		Chess.solutionB();
	}
}
 

这个问题及算法转自《编程之美》。

 

 

分享到:
评论

相关推荐

    中国象棋ai人工智能(网页版)

    在象棋游戏中,每个节点代表一个棋盘状态,而每条边则表示一次棋子的移动。由于中国象棋的每一步都有多种可能的走法,博弈树会迅速变得极其庞大。例如,如果每步有10种可能性,仅仅经过4步,博弈树的节点数量就将...

    高中一年级英语阅读理解同步练习附答案.doc

    随着科技的不断进步,人工智能在各个领域的应用越来越广泛,尤其在国际象棋领域,人工智能已经达到了一个令人瞩目的高度。例如,一台计算机击败了人类国际象棋大师Viktor Prozorov的事件,充分展示了计算机智能的...

    MCTS-approx-Nash均衡解

    在博弈论中,纳什均衡是一个关键概念,由约翰·纳什提出,它描述了在一个非合作博弈中,每个玩家选择的最佳策略,即使其他玩家的策略固定不变。在这种均衡状态下,没有任何玩家可以通过单方面改变策略来提高自己的...

    信息的编程加工ppt

    本节课程以"象棋与麦子"的故事引入,讲述了一个国王承诺按照国际象棋棋盘的格子数量给予麦粒的故事,以此引出编程解决复杂问题的概念。 在数学课中,我们常常使用描点法来画函数图像,例如y=x^2的抛物线。这个过程...

    小学六年级奥数题第11课《棋盘中的数学2》试题附答案.docx

    在小学六年级奥数课程中,第11课《棋盘中的数学2》是一个重要的专题,它主要涉及棋盘上的各种数学问题,旨在培养学生的逻辑思维、空间想象和问题解决能力。这一课的内容通常包括棋盘格子的排列、棋子的移动规则以及...

    人工智能英文版课件:06 Adversarial Search.ppt

    总之,Adversarial Search是AI领域中的一个重要研究方向,它结合了搜索算法、策略制定和评价函数,以应对具有挑战性的双人对战游戏。随着技术的进步,AI在游戏中的表现越来越接近甚至超越人类,这对于理解智能决策和...

    初识程序设计教案.doc

    3. 新课教学:介绍程序设计的一般流程,包括问题分析、算法设计、编码和调试运行,强调算法在编程中的核心地位。 4. 讨论环节:探讨普通人学习编程的价值,让学生理解编程不仅是技能,更是一种思维方式。 通过本...

    小学六年级奥数题第12课《棋盘中的数学3》试题附答案.docx

    《棋盘中的数学3》是小学六年级奥数课程中的一个重要课题,主要涉及利用棋盘图形和棋类游戏中的策略来解决数学问题。这节课的知识点丰富多样,旨在提升学生的逻辑思维、空间想象以及问题解决能力。下面我们将详细...

    Discrete Mathematics (Lecture Notes, Yale University, Spring 1999)

    - **国际象棋的最后一步**:通过一个有趣的例子解释了如何在通信中安全地传递信息。 以上是对耶鲁大学1999年春季学期离散数学课程讲义内容的总结,涵盖了从基础的计数方法到高级的图论和密码学等多个领域的重要...

Global site tag (gtag.js) - Google Analytics