CalcYizhiArrayUtils.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package utils;
  2. import model.Room;
  3. import model.template.Template;
  4. import java.util.ArrayList;
  5. import java.util.Collections;
  6. import java.util.List;
  7. /**
  8. * @author duh
  9. * @create 2018/7/25 14:53
  10. * @email duh@elab-plus.com
  11. **/
  12. public class CalcYizhiArrayUtils {
  13. private List<Integer> roomLength;
  14. private List<Integer> oneAlignAllLength;
  15. private List<Integer> twoAlignAllShortLength;
  16. private List<Integer> twoAlignAllLongLength;
  17. public void calcYizhiWithOnlyOneTwoAlign(){
  18. int totalOneLenth = 0;
  19. for(int length : oneAlignAllLength){
  20. totalOneLenth += length;
  21. }
  22. int leftForTwo = roomLength.get(3) - totalOneLenth;
  23. if(leftForTwo>0){
  24. System.out.println("可以一字排,方案如下:");
  25. }
  26. }
  27. /**
  28. * 获取n个数的所有组合
  29. * @param n
  30. */
  31. public List<List<Integer>> getAllArrayList(int n){
  32. List<List<Integer>> arrayList = new ArrayList<>();
  33. if(n < 1){
  34. return arrayList;
  35. }else if(n==1){
  36. List<Integer> list = new ArrayList<>();
  37. list.add(n);
  38. arrayList.add(list);
  39. return arrayList;
  40. }
  41. arrayList = getAllArrayList(n-1);
  42. for(int index = arrayList.size() -1;index>=0;index--){
  43. List<Integer> list = arrayList.remove(index);
  44. for(int i = 0;i<n;i++){
  45. List<Integer> newList = new ArrayList<>();
  46. newList.addAll(list);
  47. newList.add(i,n);
  48. arrayList.add(newList);
  49. }
  50. }
  51. return arrayList;
  52. }
  53. /**
  54. * 排列数
  55. * @param n
  56. * @return
  57. */
  58. public int A(int n){
  59. if(n <= 0){
  60. return 0;
  61. }else if(n==1){
  62. return 1;
  63. }else {
  64. return n*A(n-1);
  65. }
  66. }
  67. }