JAVA 고전 알고리즘(1)

【프로그램 1】   제목:고전적 인 질문:한 쌍 의 토끼 가 태 어 난 지 3 개 월 째 부터 매달 한 쌍 의 토끼 를 낳는다.토끼 가 자라 서 4 개 월 째 가 되면 매달 한 쌍 의 토끼 를 낳는다.만약 토끼 가 죽지 않 는 다 면 매달 토끼 의 총 수 는 얼마 냐 고 묻는다.       1.프로그램 분석:토끼 의 규칙 은 피 보 나치 수열 1,1,2,3,5,8,13,21...    
public class exp2 {
	public static void main(String args[]) {
		int i = 0;
		for (i = 1; i <= 20; i++)
			System.out.println(f(i));
	}

	public static int f(int x) {
		if (x == 1 || x == 2)
			return 1;
		else
			return f(x - 1) + f(x - 2);
	}
}

 혹시
public class exp2 {
	public static void main(String args[]) {
		int i = 0;
		math mymath = new math();
		for (i = 1; i <= 20; i++)
			System.out.println(mymath.f(i));
	}

}

class math {
	public int f(int x) {
		if (x == 1 || x == 2)
			return 1;
		else
			return f(x - 1) + f(x - 2);
	}
}

 【절차 2] 제목:101-200 사이 에 몇 개의 소수 가 있 는 지 판단 하고 모든 소 수 를 출력 합 니 다.       프로그램 분석:소 수 를 판단 하 는 방법:하나의 수로 각각 2 에서 sqrt(이 수)를 제거 하고 정 제 될 수 있다 면,       이 수 는 소수 가 아니 라 소수 임 을 나타 낸다.   
public class exp2 {
	public static void main(String args[]) {
		math mymath = new math();
		for (int i = 101; i <= 200; i++)
			if (mymath.iszhishu(i) == true)
				System.out.println(i);
	}
}

class math {
	public boolean iszhishu(int x) {
		for (int i = 2; i <= x / 2; i++)
			if (x % 2 == 0)
				return false;
		return true;
	}
}

 【절차 3]       제목:모든 것 을 출력   "수선화 수   ",이른바   "수선화 수   "세 자릿수 를 말 하 는데,그 숫자 큐 브 와 그 숫자 자 체 를 말한다.153   "수선화 수   ",153=1 의 3 차원+5 의 3 차원+3 의 3 차원 이기 때문이다.       1.프로그램 분석:for 순환 을 이용 하여 100-999 개의 수 를 제어 하고 각 수 는 개 비트,10 비트,백 비트 를 분해 합 니 다.
public class exp2 {
	public static void main(String args[]) {
		int i = 0;
		math mymath = new math();
		for (i = 100; i <= 999; i++)
			if (mymath.shuixianhua(i) == true)
				System.out.println(i);
	}
}

class math {
	public boolean shuixianhua(int x) {
		int i = 0, j = 0, k = 0;
		i = x / 100;
		j = (x % 100) / 10;
		k = x % 10;
		if (x == i * i * i + j * j * j + k * k * k)
			return true;
		else
			return false;
	}
}

 【절차 4]   제목:정수 분해 질량 인수.예 를 들 어 90 을 입력 하고 90=2*3*3*5 를 출력 합 니 다.       프로그램 분석:n 에 대해 분해 질량 인 수 를 진행 하려 면 먼저 가장 작은 질량 k 를 찾 은 다음 에 다음 절차 에 따라 완성 해 야 한다.       (1)만약 에 이 질 수가 n 과 같다 면 질 인 수 를 분해 하 는 과정 이 이미 끝 났 음 을 설명 하고 인쇄 하면 된다.       (2)만약 n !=k,그러나 n 이 k 에 의 해 정 제 될 수 있 으 면 k 의 값 을 인쇄 하고 n 을 k 로 나 누 는 업 체 로 새로운 정수 n 으로 첫 번 째 단 계 를 반복 해 야 합 니 다.       (3)n 이 k 에 의 해 제거 되 지 않 으 면 k+1 을 k 의 값 으로 하고 첫 번 째 단 계 를 반복 한다.
public class exp2 {
	public void fengjie(int n) {
		for (int i = 2; i <= n / 2; i++) {
			if (n % i == 0) {
				System.out.print(i + "* ");
				fengjie(n / i);
			}
		}
		System.out.print(n);
		System.exit(0);// /     ,       
	}

	public static void main(String[] args) {
		exp2 c = new exp2();
		System.out.println("   N  :");
		Scanner in = new Scanner(System.in);
		int N = in.nextInt();
		System.out.print(N + "     : " + N + "= ");
		c.fengjie(N);
	}
}

 【절차 5]       제목:조건 연산 자 를 포함 하여 이 문 제 를 완성 합 니 다:학습 성적>   =90 점 짜 리 학 우 는 A 로,60~89 점 짜 리 는 B 로,60 점 이하는 C 로 표시 했다.       1.프로그램 분석:(a>   b)?a:b 이것 은 조건 연산 자의 기본 예 입 니 다.
public class exp2 {
	public static void main(String[] args) {
		String str; 
		System.out.println("   N  :");
		Scanner in = new Scanner(System.in);
		int N = in.nextInt();
		str=(N> 90? "A ":(N> 60? "B ": "C ")); 
        System.out.println(str); 
	}
}

 
[프로그램 6]       제목:두 개의 정수 m 와 n 을 입력 하여 최대 공약수 와 최소 공배수 를 구하 십시오.       1.프로그램 분석:압연 법 을 이용한다.
최대 공약수 구하 기:
public class exp2 {
	public static void main(String args[]) {
		commonDivisor(24, 32);
	}

	static int commonDivisor(int M, int N) {
		if (N < 0 || M < 0) {
			System.out.println("ERROR! ");
			return -1;
		}
		if (N == 0) {
			System.out.println("the biggest common divisor is: " + M);
			return M;
		}
		return commonDivisor(N, M % N);
	}
}

 
최소 공배수 와 최대 공약수 구하 기:
public class exp2 {
	//              
	public static int gcd(int m, int n) {
		while (true) {
			if ((m = m % n) == 0)
				return n;
			if ((n = n % m) == 0)
				return m;
		}
	}

	public static void main(String args[]) throws Exception {
		//      
		// Scanner chin = new Scanner(System.in);
		// int a = chin.nextInt(), b = chin.nextInt();
		int a = 23;
		int b = 32;
		int c = gcd(a, b);
		System.out.println("     : " + a * b / c + "
: " + c); } }

 【절차 7]       제목:s=a+aa+aa+aa+aa...a 의 값 을 구 합 니 다.그 중에서 a 는 숫자 입 니 다.예 를 들 어 5+55+5555+55555(이때 모두 5 개의 수 를 더 함),몇 개의 수 를 더 하면 키보드 제어 가 있다.       1.프로그램 분석:관건 은 모든 항목 의 값 을 계산 하 는 것 이다. 
public class exp2 {
	public static void main(String[] args) throws IOException {
		int s = 0;
		int n;
		int t = 0;
		BufferedReader stadin = new BufferedReader(new InputStreamReader(
				System.in));
		System.out.println("   n  :");
		String input = stadin.readLine();
		n = Integer.parseInt(input);
		for (int i = 1; i <= n; i++) {
			t = t * 10 + n;
			s = s + t;
			System.out.println(t);
		}
		System.out.println(s);
	}
}

 
[프로그램 8]       제목:하나의 수가 그 인자 의 합 과 같다 면 이 수 를   "완전무결 하 다   "。예 를 들 어 6=1+2+3.
 프로 그래 밍 으로 1000 이내 의 모든 완 수 를 찾아내다.
 
public class exp2 {
	public static void main(String[] args) {
		int s;
		for (int i = 1; i <= 1000; i++) {
			s = 0;
			for (int j = 1; j < i; j++)
				if (i % j == 0)
					s = s + j;
			if (s == i)
				System.out.println(i);
		}
	}
}

 
[프로그램 9]   제목:한 골 은 100 미터 높이 에서 자 유 롭 게 떨 어 지고 매번 착지 한 후 원래 높이 의 절반 으로 되 돌아 갑 니 다.다시 떨 어 지면 10 번 째 착지 할 때 모두 몇 미 터 를 거 쳐 야 합 니까?10 번 째 반등 은 얼마나 높 습 니까?
public class exp2 {
	public static void main(String[] args) {
		double s = 0;
		double t = 100;
		for (int i = 1; i <= 10; i++) {
			s += t;
			t = t / 2;
		}
		System.out.println(" 10    ,   :" + s);
		System.out.println(" 10   :" + t);
	}
}

 【프로그램 10]   제목:1,2,3,4 개의 숫자 가 있 는데 서로 다 르 고 중복 되 지 않 는 세 자릿수 를 구성 할 수 있 습 니까?다 얼마예요?   1.프로그램 분석:백 자리,열 자리,개 자리 에 쓸 수 있 는 숫자 는 모두 1,2,3,4 이다.모든 배열 을 구성 한 후 조건 에 만족 하지 않 는 배열 을 제거한다.  
public class exp2 {
	public static void main(String[] args) {
		int i = 0;
		int j = 0;
		int k = 0;
		int t = 0;
		for (i = 1; i <= 4; i++)
			for (j = 1; j <= 4; j++)
				for (k = 1; k <= 4; k++)
					if (i != j && j != k && i != k) {
						t++;
						System.out.println(i * 100 + j * 10 + k);
					}
		System.out.println(t);
	}
}

 
(잠시 여기까지 쓰 고 계 속····)

좋은 웹페이지 즐겨찾기