抽紙牌,任意張牌,1拿一張到牌底,2拿一張放到桌面,重復1,2操作,直到手中沒牌,最後桌子上的牌是從1到n有序,求出牌排放順序。
阿新 • • 發佈:2019-03-22
size i++ mine fir ray port ++ tps 開始
抽紙牌,任意張牌,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拿一張到牌底,2拿一張放到桌面,重復1,2操作,直到手中沒牌,最後桌子上的牌是從1到n有序,求出牌排放順序。