• 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;
          }
    }
  • 相关阅读:
    JFinal教程
    jvm总结
    函数初识【第十一篇】
    python基础【第十篇】
    python基础【第九篇】
    python基础【第八篇】
    python基础【第七篇】
    python基础【第六篇】
    python基础【第五篇】
    python基础【第四篇】
  • 原文地址:https://www.cnblogs.com/wn19910213/p/3116740.html
Copyright © 2020-2023  润新知