「java圆盘」用java编写一个圆
本篇文章给大家谈谈java圆盘,以及用java编写一个圆对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何用java实现汉诺塔中的递归
- 2、找一款java游戏,2.5D的欧美风格动作冒险游戏?
- 3、【java字符串处理】现在给你一个字符串S,请你计算S中有多少连续子串是回文串。
- 4、java堆栈 先进后出是什么意思
如何用java实现汉诺塔中的递归
public class Hannuota {
private int n;//储存盘子个数
public Hannuota(int n){
this.n = n;
}
public void function(){
//初始化三个柱子,A是开始堆满盘子的柱子,C是目标柱子
Pillar a = new Pillar(n,n,"A");
Pillar b = new Pillar(n,"B");
Pillar c = new Pillar(n,"C");
//把三个柱子按顺序排好,详见后面的算法那里的解释
Pillar[] pillars = new Pillar[3];
pillars[0] = a;
if(n%2==0){
pillars[1] = b;
pillars[2] = c;
}else{
pillars[1] = c;
pillars[2] = b;
}
//开始移动,k用来计数,移动次数为2^n-1,至于为什么,我不太清楚,
//反正有人证明过。i是用来保存最小那个盘子正在哪跟柱子上的。
int i=0;
for(int k=0;k(int)Math.pow(2, n)-1;){
int min;
//将最小的盘子顺时针移动一个柱子
min = pillars[i%3].Pop();
pillars[(i+1)%3].Push(min);
System.out.println(pillars[i%3]+"-"+pillars[(i+1)%3]);
k++;
i++;
//这个IF好像可以不要,当时写的,后面忘了删除。
if(k(int)Math.pow(2, n)-1){
//如果,剩下两根柱子中,某一根为空,则一定是非空那根中最上面个盘子
//移动到空的那个柱子上。若两根都不为空,则把编号小的一个盘子
//移动到另外跟柱子上
if(!pillars[(i-1)%3].isEmpty()(pillars[(i+1)%3].isEmpty()||pillars[(i+1)%3].Top()pillars[(i-1)%3].Top())){
min=pillars[(i-1)%3].Pop();
pillars[(i+1)%3].Push(min);
System.out.println(pillars[(i-1)%3]+"-"+pillars[(i+1)%3]);
}else{
min=pillars[(i+1)%3].Pop();
pillars[(i-1)%3].Push(min);
System.out.println(pillars[(i+1)%3]+"-"+pillars[(i-1)%3]);
}
k++;
}
}
}
//主函数,用来测试的。3表示3个盘子。
public static void main(String args[]){
new Hannuota(3).function();
}
}
class Pillar{//构造一个新类,表示柱子,实际是当一个栈在用
private int[] s;
private int top;
private String name;
public String toString(){
return name;
}
//这个构造函数用来构造BC两个柱子,下面那个用来构造柱子A。其实也可以写成一个构造函数。
public Pillar(int max,String name){
s = new int[max];
top = -1;
this.name = name;
for(int i=0;imax;i++){
s[i] = max+1;
}
}
public Pillar(int n,int max,String name){
s = new int[max];
top = n-1;
this.name = name;
for(int i=0;imax;i++){
s[i] = max - i;
}
}
//这后面这些就是栈的基本方法了,不用介绍了吧
public boolean isEmpty(){
return top==-1?true:false;
}
public int Top (){
return s[top];
}
public int Pop(){
return s[top--];
}
public void Push(int x){
s[++top] = x;
}
}
算法是这个
首先容易证明,当盘子的个数为n时,移动的次数应等于2^n - 1。
首先把三根柱子按顺序排成品字型,把所有的圆盘按从大到小的顺序放在柱子A上。
根据圆盘的数量确定柱子的排放顺序:若n为偶数,按顺时针方向依次摆放 A B C;
若n为奇数,按顺时针方向依次摆放 A C B。
(1)按顺时针方向把圆盘1从现在的柱子移动到下一根柱子,即当n为偶数时,若圆盘1在柱子A,则把它移动到B;
若圆盘1在柱子B,则把它移动到C;若圆盘1在柱子C,则把它移动到A。
(2)接着,把另外两根柱子上可以移动的圆盘移动到新的柱子上。
即把非空柱子上的圆盘移动到空柱子上,当两根柱子都非空时,移动较小的圆盘
这一步没有明确规定移动哪个圆盘,你可能以为会有多种可能性,其实不然,可实施的行动是唯一的。
(3)反复进行(1)(2)操作,最后就能按规定完成汉诺塔的移动。
这玩意要非递归真麻烦。需不需要加点注释?
其实我不明白干嘛非要非递归。。。
找一款java游戏,2.5D的欧美风格动作冒险游戏?
1、勇者斗恶龙11
这是一款由Square Enix制作并发执行的动作冒险游戏。游戏中男主角在一座小村庄Ishi长大,16岁后村庄为他举办了传统的成人仪式,在仪式上他得知自己正是传说中拯救世界的“勇者”转生,而他也将背负着重大的使命。为了了解有关勇者的一切,主角离开家乡踏上了冒险之旅。
游戏非常好玩啊,剧情也很棒。而且战斗场面有两个选项,一个就是在地图瞎跑,另一个就是跟dq8战斗风格一样可以自动切换镜头(但不能走动)。唯一有点坑的就是支线任务,尤其在城里绕了大半圈都没找到人的。
2、仙剑奇侠传4
仙剑系列推出至今已经历了10余个年头,无数玩家受其中凄美的爱情感召而落泪。4代的剧情风格会异于三代与三代外传,除了将更加突显中国文化,也将更创新与复古兼备地呈现仙剑文化。在武侠神怪世界观的基础上,发挥以情动人、咏物关情,融合剑仙、江湖、修道等要素,绘制出一幅旷世情缠的柔情悲剧之画卷。
故事的起点始于黄山青鸾峰之巅,驰骋于神州大地、往来于天地之间,东临渤海、南抵巴蜀、北至传说中的“北极之地”、西达上古圣山昆仑仙境。既有繁华热闹、歌舞升平的中原富庶之地,又有大漠边关、丝绸之路上的小小驿站。每一个城镇之中的建筑、草木,乃至于店中出售的食物,都各有其特色。游戏的剧情受人称赞,迷宫难度较前几代有所降低,而且在国产单机游戏日渐式微的今天,4代更具特殊意义。
3、废品机械师
这是一款Axolot Games制作并发行的角色扮演游戏。该作以生存为主调,玩家将扮演一名清道夫,在随机生成的世界中探索,收集素材,并制作出各种有意思的东西,包括建筑、机器以及车辆等。
4、二之国2:亡灵之国
这是由日式巨商Level 5打造的《二之国》系列正统续作,该系列用动人的故事、创新的操作和惊叹的艺术效果,在RPG领域开辟了一篇新领域。其出色的吉卜力的风格和故事表现手法,让玩家能够感受到《二之国》这款非常日式的游戏的魅力。
本作讲述一个少年成长为国王的故事,玩家将在在成长过程中遇到了各种各样的人,发生各种各样的事,最后成为一名出色的国王。制作组将这些系统、故事、画面等各种要素相结合,创作了一个带有人情味的世界性的作品,并继前作之后继续挑战新的高峰,把这种风格发挥到了更理想的水准。
5、永恒之柱2:死亡之火
这是由Obsidian Entertainment制作并发行的一款角色扮演游戏。本作依旧沿用了前作的上帝视角,但是无论是在音效、画面、UI还是游戏的建模、剧情,都有了全面的进步。并且游戏的官方中文玩家们也都相当一致地给出了高度的评价。
在本作中光和重生之神Eothas将会回归,这位此前曾被认为已经死亡了的角色目前正栖身于一个石巨人的体内,而这个石巨人已经在玩家们的主城下方沉睡上了千年之久。当他从地底下苏醒的时候破坏了玩家们的庇护所,局势危在旦夕。游戏中的角色们都有自己的生活和工作,也有各自奋斗的目标,因此即使你不在游戏中他们仍然会继续着这些活动,进行中的任务也会因为届时的人物状态和环境而出现不同的机会和变化。
6、英雄传说:闪之轨迹
游戏最大的一个亮点就是画面的进化,角色也从之前的Q版形象变为了正常比例,而且本作无论在战斗、剧情演出等方面都比之前的系列作品有大幅提升。游戏的舞台是泽姆利亚大陆上的帝国,背景设定是和《空轨》同时代、同一世界。
战斗依然采用指令式,但是速度感非常强,通过同伴之间的羁绊之力可以实现压倒性的战术。在移动、街道和对话的时候,角色都会有各种各样的语音演出。在地图中可以360度旋转镜头,让玩家体验到更加丰富的场景魅力
【java字符串处理】现在给你一个字符串S,请你计算S中有多少连续子串是回文串。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class test
{
public static void main(String[] args) throws IOException
{
System.out.print("输入圆盘的个数:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str=br.readLine();
int m=Integer.parseInt(str);
System.out.println("移动步骤:");
hanoi(m,'A','B','C');
}
java堆栈 先进后出是什么意思
不知道你玩过汉诺塔没有,就类似这种感觉,先放下去的圆盘在最下面,你必须要把盖在上面的圆盘全部拿走才可以拿最下面的,栈也是这个意思,最先放进去的数据,必须把之后放进去的数据全部读取出来,然后才能读取到这个数据
关于java圆盘和用java编写一个圆的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。