자바 의 두 문제 및 답

13067 단어 필기 하 다.
1.숫자 1000 이전의 피 보 나치(Fbonaca)수열 모듈 을 프로 그래 밍 하 십시오.(열 의 마지막 항목 은 1000 보다 작다)
알림:
피 보 나치 수열:이 수열 은 세 번 째 항목 부터 시작 하여 모든 항목 이 앞의 두 항목 의 합 과 같 습 니 다.예 를 들 어{1.1.2.3.5.8.13.21.34.55}
요청:
(1)재 귀적 사용 불가(2)앞의 수 를 배열/집합 에 저장 할 수 없습니다.
문제 풀이 코드:

public class FirstDay {

	/**      1000         。(        1000)
	 * @param args
	 */
	
	public static void main(String[] args) {

	}
	
		/*   
		// TODO Auto-generated method stub
		int a = 0;	//  
		int b = 1;
		for (int i = 0; i < 100; i++) {
			if(i % 2 == 0){
				b +=a;
				System.out.println(b);
			}else{
				a= a + b;
				System.out.println(a);
			}
			if(a+b >1000){
				break;
			}
		}
	}
}
*/
		/*
	//   ;
	int a = 1;	//     1;
	int b = 1;	//      1
	for(int i = 0; i < 10000; i++){	//            
		System.out.print(" "+a+" "+b);
		a += b;
		b += a;
		i = b;
			}
			
			*/

}

2.두 배열 의 a 와 b 를 알 고 있 습 니 다.배열 의 숫자 는 수치 에 따라 작은 것 에서 큰 것 으로 정렬 되 었 고 각 배열 에는 중복 값 이 없습니다.프로그램 을 작성 하여 배열 c,c 는 a 와 b 의 집합 이 고 c 의 숫자 는 작은 것 에서 큰 것 으로 정렬 되 며 중복 되 지 않 습 니 다.
알림:
    :
  a={1.3.8.20} b={2.3.11.12.15.26}  : c={1.2.3.8.11.12.15.20.26}
     o(m+n)      ,        :
  a      b         ,  ,     c ,           n    ,  a      8, b      11, 8  c ,     a      20 b     11    ,    ,      。

요청:
  1)             0(m+m),             ,       ,         0(m*n);

for(inti=1.i for(intj=1.j}2)내부 함 수 를 사용 할 수 없습니다.가장 원시 적 인 배열 형식 으로 프로그램 을 작성 해 야 합 니 다.
문제 풀이 코드:
public class FirstDay2 {

	/**2.      a b,                 ,
	 *           。       c, c a b   ,
	 *  c               。
	 * a={1.3.8.20} b={2.3.11.12.15.26}
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] a = {1,3,8,20};
		int[] b = {2,3,11,12,15,26};
		int m = a.length;
		int n = b.length;
		int ap = 0;
		
		int cp = 0;	//c       
		int bp = 0;	//b     ——>  b     c       
		int[] c = new int[m+n];
		for (int i = 0; i < c.length; i++) {
			if(ap == m&& bp< n){
				c[i] = b[bp];
				bp++;
				continue;
			}else if(bp == n&&ap <m){
					c[i]= a[bp];
					ap++;
					continue;
				}else if (ap==m&&bp==n) {
					break;	
				}else{
					if(a[ap]>b[bp]){
						c[i]=b[bp];
						bp++;
					}else if(a[ap]<b[bp]){
						c[i]=a[ap];
						ap++;
						
					}else {
						c[i]=a[ap];
						ap++;
						bp++;
					}
				}
			
		}
		
		
//		for (int i = 0; i < c.length; i++) {
//			if(a[i] < b[i]){
//				c[cp] = a[i];
//				cp++;
//			}else if (a[i] == b[i]) {
//				c[cp] = a[i];
//				cp++;
//			}else {
//				c[cp] = b[i];
//				cp++;
//			}
//		}
//		for (int i = 0; i < c.length; i++) {
//			System.out.println(c[i]);
//		}		
		
		/*
		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < b.length; j++) {
				j = bp;
				if (a[i] < b[j]) {
					c[cp] = a[i];
					cp++;
					if(i+1 == a.length){
						for (int j2 = bp; j2 < b.length; j2++) {
							c[cp] = b[j];
							cp++;
						}
					}
					break;
				}else if (a[i] >b[j]) {
					c[cp] = b[j];
					cp++;
					bp++;
				}else {
					c[cp] = a[i];
					cp++;
					bp++;
					break;
				}
			}
		}*/
		for (int i = 0; i < c.length; i++) {
			if(c[i] != 0){
			System.out.println(c[i]);
			}
		}	
		
	//           O(m+n)
		
	}
}

좋은 웹페이지 즐겨찾기