zoukankan      html  css  js  c++  java
  • 抽纸牌,任意张牌,1拿一张到牌底,2拿一张放到桌面,重复1,2操作,直到手中没牌,最后桌子上的牌是从1到n有序,求出牌排放顺序。

    抽纸牌,任意张牌,1拿一张到牌底,2拿一张放到桌面,重复1,2操作,直到手中没牌,最后桌子上的牌是从1到n有序,求出牌排放顺序。

    很久以前的代码,电脑清理,留存

    package linkedlist;
    
    import java.util.ArrayList;
    import java.util.LinkedList;
    /**
     * 抽纸牌,任意张牌,1拿一张到牌底,2拿一张放到桌面,,重复1,2操作,使桌面的牌形成12345~顺序排列,求出牌排放顺序
     * @author https://github.com/famine-life
     * 
     * 本程序假设5张
     *
     */
    public class test {
    
    	public static void main(String[] args) {
    		//ArrayList list0 = new ArrayList();
    		LinkedList<Integer> list0 = new LinkedList<Integer>();	//要求出的数列
    		LinkedList<Integer> list1 = new LinkedList<Integer>();	//设置list1为:12345
    		LinkedList<Integer> list2 = new LinkedList<Integer>();	//12345执行游戏规则后的数列
    		LinkedList<Integer> list_test = new LinkedList<Integer>();	//用于验证的
    		list1.add(1);
    		list1.add(2);
    		list1.add(3);
    		list1.add(4);
    		list1.add(5);
    		
    		System.out.println("初始list1:"+list1);
    		System.out.println("=========");
    		System.out.println("执行游戏规则后:");
    		for(int i=0;list2.size()<5;i++)
    		{
    			list1.add(list1.removeFirst()); 	
    			list2.add(list1.getFirst());		
    			list1.removeFirst();				
    		}
    		
    
    		System.out.println("list1:"+list1);
    		System.out.println("list2:"+list2);		//2, 4, 1, 5, 3
    		System.out.println("==================");
    		
    		System.out.println("发现list2的值作为list1的下标,他们的值就会相等:(下标从1开始)");
    		
    		list1.add(1); //从新初始化list1
    		list1.add(2);
    		list1.add(3);
    		list1.add(4);
    		list1.add(5);
    		for(int j=0;j<list2.size();j++)
    			System.out.print(list1.get(list2.get(j)-1));  //-1是因为防止数组溢出
    		
    		System.out.println();
    		System.out.println("==================");
    		System.out.println("那么list0应该是这样求:");
    		
    		list0.add(0); //初始化list0
    		list0.add(0);
    		list0.add(0);
    		list0.add(0);
    		list0.add(0);
    		
    		for(int k=0;k<list2.size();k++)
    		{	
    			//-1是因为防止数组溢出
    			list0.set(list2.get(k)-1,list1.get(k));		//set(index,element)
    		}
    		System.out.println("输出list0:");
    		System.out.println(list0);
    		
    		
    		//遍历出List0
    //		for(int x=0;x<list0.size(); x++)
    //			System.out.println(x+","+list0.get(x));
    		
    		System.out.println("==================");
    		System.out.println("验证:");
    		System.out.println("用List0执行游戏规则:");
    		
    		for(int m=0;list_test.size()<5;m++)
    		{
    			list0.add(list0.removeFirst()); 	//list1.addLast(list1.removeLast());
    			list_test.add(list0.getFirst());		//list0.addLast(list1.getLast());
    			list0.removeFirst();				//list1.removeLast();
    		}
    		System.out.println("验证输出:"+list_test);
    	}
    	
    
    }
    
    

    输出

    初始list1:[1, 2, 3, 4, 5]
    =========
    执行游戏规则后:
    list1:[]
    list2:[2, 4, 1, 5, 3]
    ==================
    发现list2的值作为list1的下标,他们的值就会相等:(下标从1开始)
    24153
    ==================
    那么list0应该是这样求:
    输出list0:
    [3, 1, 5, 2, 4]
    ==================
    验证:
    用List0执行游戏规则:
    验证输出:[1, 2, 3, 4, 5]
    
    
  • 相关阅读:
    读书笔记 1 --《码出高效:java开发手册》
    TCP
    同步、异步、阻塞、非阻塞
    MongoDB 概述
    mysql连接不释放
    R-CNN学习笔记
    吴恩达深度学习笔记(十二)—— Batch Normalization
    吴恩达深度学习笔记(十一)—— dropout正则化
    《统计学习方法》笔记第二章 —— 感知机
    《机器学习基石》第一周 —— When Can Machine Learn?
  • 原文地址:https://www.cnblogs.com/famine/p/10577763.html
Copyright © 2011-2022 走看看