JAVA实现魔术师发牌问题
来源:互联网 发布:mac好用的绘图 编辑:程序博客网 时间:2024/06/05 05:19
魔术师发牌问题:
问题名称:魔术师发牌问题
问题描述:魔术师手里一共有13张牌,全是黑桃,1~13.
魔术师需要实现一个魔术:这是十三张牌全部放在桌面上(正面向下),
第一次摸出第一张,是1,翻过来放在桌面上。
第二次摸出从上往下数第二张,是2,翻过来 放在桌面上,(第一张放在最下面去,等会儿再摸),
第三次摸出从上往下数第三张,是3,翻过来放在桌面上,(第一张和第二张 放在最下面去,等会儿再摸)
以此类推 最后一张就是13
方法:
1、创建一个长度为13的单向循环链表,链表中值全部存0
2、遍历链表进行修改值
JAVA代码实现:
1 0 0 0 0 0 0 0 0 0 0 0 0
1 8 2 5 10 3 12 11 9 4 7 6 13
问题描述:魔术师手里一共有13张牌,全是黑桃,1~13.
魔术师需要实现一个魔术:这是十三张牌全部放在桌面上(正面向下),
第一次摸出第一张,是1,翻过来放在桌面上。
第二次摸出从上往下数第二张,是2,翻过来 放在桌面上,(第一张放在最下面去,等会儿再摸),
第三次摸出从上往下数第三张,是3,翻过来放在桌面上,(第一张和第二张 放在最下面去,等会儿再摸)
以此类推 最后一张就是13
方法:
1、创建一个长度为13的单向循环链表,链表中值全部存0
2、遍历链表进行修改值
JAVA代码实现:
package com.briup.Study;public class MagicPoker {//定义链表的头节点private Node head;//成员内部类Node来实现链表class Node {private Integer date;private Node next;public Node() {}public Node(Integer date) {this(date,null);}public Node(Integer date, Node next) {this.date = date;this.next = next;}public Integer getDate() {return date;}public void setDate(Integer date) {this.date = date;}public Node getNext() {return next;}public void setNext(Node next) {this.next = next;}}/*构造函数中直接初始化长度为13的循环链表 * 第一个节点的值默认为1*/public MagicPoker() {head = new Node(1);Node p = head;int i=1;while(p.next==null&&i<13) {Node nextNode = new Node(0);p.next = nextNode;p = p.next;i++;}//构建循环链表p.next = head;}//打印循环链表public void myPrint() {Node p = head;for(int i=0;i<13;i++) {System.out.print(p.date+" ");p = p.next;}}//循环修改节点值(核心代码)public void magic() {//指针p指向head用来控制每次指针移动的下一个位置Node p = head;//从2开始存到13for(int i=2;i<=13;i++) {for(int j=0;j<i;j++) {p = p.next;//如果已经有牌,跳过if(p.date!=0) {j--;}}p.date=i;}}public static void main(String[] args) {MagicPoker magic = new MagicPoker();magic.myPrint();magic.magic();System.out.println();magic.myPrint();}}打印结果:
1 0 0 0 0 0 0 0 0 0 0 0 0
1 8 2 5 10 3 12 11 9 4 7 6 13
阅读全文
0 0
- 魔术师发牌问题 java 实现
- JAVA实现魔术师发牌问题
- 魔术师发牌 Java实现
- 魔术师发牌问题的java实现
- 魔术师发牌问题C++实现
- 魔术师发牌问题(C++实现)
- 魔术师发牌问题GO语言实现
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题(数据结构)
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题2
- 魔术师发牌问题
- 魔术师发牌问题
- 教你彻底学会动态规划——入门篇
- Gerrit安装配置
- IOS与安卓的区别
- Cloudera Manager5.11.0部署spark2.2.0版本
- 用conda安装tensorflow-gpu1.4
- JAVA实现魔术师发牌问题
- 快速排序
- 贪心
- 直接使用命令去下载文件(简单)
- Android Studio3.0开发JNI流程------JNI静态注册和动态注册(多个类的native动态注册-经典篇)
- Lua之__index与__newindex
- 2-SAT 题表
- 动态规划 python 实现 三角形最大值路径
- SDUT-3377-->数据结构实验之查找五:平方之哈希表