폭력의 귀속과 동태적 기획

폭력의 귀속과 동태적 기획
제발 n!결과
  • 사고방식: n을 요구합니다!,먼저 (n-1)을 구해야 합니다!,n*(n-1)! 즉 n!를 참고하십시오.요구(n-1)!,먼저 ·····
  • 코드
    public class Factorial {
        public static int factorial(int num) {
            if (num == 1) {
                return 1;
            }
            return factorial(num - 1) * num;
        }
    
        public static void main(String[] args) {
            System.out.println(factorial(3));
        }
    }
    
    
  • 한노타 문제
  • 제목: n층 한노타를 인쇄하여 맨 왼쪽에서 맨 오른쪽으로 이동하는 모든 과정
  • 사고방식: 3단계로 나눈다
  • 먼저 1~n-1층을 왼쪽에서 중간으로 이동
  • 계층 n을 왼쪽에서 맨 오른쪽으로 이동
  • 마지막으로 1~n-1층을 가운데에서 맨 오른쪽으로 이동
  • 코드
    /**
     *      
     */
    public class Hanoi {
        public static void hanoi(int N, String from, String to, String help) {
            if (N == 1) {
                System.out.println("move 1 from" + from + "to" + to);
            } else {
                hanoi(N-1,from,help,to);
                System.out.println("move"+ N +"from"+from+"to"+to);
                hanoi(N-1,help,to,from);
            }
        }
    
    
        public static void main(String[] args) {
            hanoi(3," "," "," ");
        }
    }
    
    
  • 빈 문자열을 포함한 문자열의 모든 하위 시퀀스를 인쇄합니다
  • 사고방식: 문자열의 첫 번째 위치에서 시작하여 한 위치를 두루 돌아다닐 때마다 이 위치는 두 가지 값을 얻는 상황이 있는데 하나는 이 위치 문자를 얻는 것이고 다른 하나는 빈 값을 얻는 것이다.
  • 코드:
    
    public class PrintAllSubsquences {
    
        /**
         *              ,      
         * @param str
         */
        public static void printAllSubsquences(String str) {
            char[] chars = str.toCharArray();
            process(chars,0,"");
        }
    
        public static void process(char[] chars,int i,String res) {
            if (i == chars.length) {
                System.out.println(res);
                return;
            }
            process(chars,i+1,res);
            process(chars,i+1,res+chars[i]);
        }
    
    
        public static void main(String[] args) {
            String test = "abc";
            printAllSubsquences(test);
        }
    }
    
    
  • 암소는 해마다 암소 한 마리를 낳고, 새로 태어난 암소는 3년 성장한 후에도 해마다 암소 한 마리를 낳을 수 있으니, 죽지 않을 것이라고 가정하자.N년 후 암소의 수를 구하다.
  • 사고방식: 그해 수가 3년보다 많을 때, 어느 해 소의 수량=3년 전 소의 수량+1년 전 소의 수량, 새로 태어난 소가 3년 후에야 소를 낳기 때문이다.
  • 코드
    
    /**
     *          ,                  
     *   ,     。 N  ,     。
     */
    
    public class Cow {
        public static int cowNum(int year) {
            if (year < 0) {
                return 0;
            }
            if (year == 1 || year == 2 || year == 3) {
                return year;
            } else {
                return  cowNum(year - 1) + cowNum(year - 3);
            }
    
        }
    
    
        public static void main(String[] args) {
            System.out.println(cowNum(20));
        }
    }
    
    
  • 너에게 수조arr와 정수aim를 줄게.만약arr의 숫자를 임의로 선택할 수 있다면, aim를 누적해서true 또는false로 되돌아갈 수 있습니까?
  • 사고방식: 모든 하위 서열 문제를 구하는 것과 유사하다.
  • 코드
    
    public class IsSum {
    
        public static boolean isSum(int[] arr,int sum, int aim,int i) {
            if (i==arr.length) {
                return sum==aim;
            }
            return isSum(arr, sum, aim, i + 1) || isSum(arr,sum+arr[i],aim,i+1);
        }
    
        public static void main(String[] args) {
            int[] arr = { 1, 4, 8 };
            int aim = 5;
            System.out.println(isSum(arr, 0,aim,0));
    
        }
    }
    
    
  • 좋은 웹페이지 즐겨찾기