zoukankan      html  css  js  c++  java
  • Java 魔术师发牌

    import java.util.LinkedList;
     
    public class Magician {
           public static void main(String[] args){
                LinkedList<Integer> ll = new LinkedList<Integer>();
                 int k = 0;
                 for(int i=0;i<13;i++){
                      ll.add(0);
                }
                 magician(ll,k);
                
                 for (Integer l : ll) {
                      System. out.print(l + " " );
                }
          }
     
           private static void magician(LinkedList<Integer> ll, int k) {
                 int j = 1;
                 int m=0;
                 boolean b = true;
                 for(int i=0;i<ll.size();i++ ){
                      k += i;
                      
                       if(k<ll.size()){
                            k = small(ll,k,m);
                      }
                       else{
                            k = big(ll,k,m);
                      }
                      ll.set(k, j++);
                      m = k;
                }
          }
     
           private static int big(LinkedList<Integer> ll, int k, int m) {
                k -= ll.size();
                 int l = k;
                 for(int n=0;n<l;n++){
                       if(ll.get(n) != 0){
                            k += 1;
                      }
                      
                       if(k > ll.size()){
                            k -= ll.size();
                      }
                }
                 for(int n=m;n<ll.size();n++){
                       if(ll.get(n) != 0){
                            k += 1;
                      }
                      
                       if(k > ll.size()){
                            k = big(ll, k, m);
                      }
                }
                 for(int n=l;n<=k;n++){
                       if(n>=ll.size()){
                            k -= ll.size();
                            n -= ll.size();
                      }
                       if(ll.get(n) != 0){
                            k += 1;
                      }
                }
                 return k;
          }
     
           private static int small(LinkedList<Integer> ll, int k, int m) {
                 int l = k;
                 for(int num=m;num<=k;num++){
                       if(ll.get(num) != 0){
                            k += 1;
                      }
                       if(k>ll.size()){
                            k = big(ll, k, m);
                      }
                       if(num>=ll.size()){
                            k -= ll.size();
                            num -= ll.size();
                      }
                }
                 return k;
          }
    }
  • 相关阅读:
    第二次冲刺周期站立会议(3)
    第二次冲刺周期站立会议(2)
    第二次冲刺周期站立会议(1)
    测试计划
    对各组第一次冲刺周期的评价
    团队绩效评估计划
    学校网站UI设计分析
    站立会议(10)
    Bower和Gulp集成前端资源
    Laravel的学习网站推荐
  • 原文地址:https://www.cnblogs.com/wn19910213/p/3116740.html
Copyright © 2011-2022 走看看