Góc thủ thuật sv | Hướng dẫn lập trình java cơ bản | Chia sẻ code

Bài 13. Nhập số liệu cho 2 dãy số thực a0 , a1 ,..., am-1 và b0 , b1 ,..., bn-1. Giả sử cả 2 dãy này đã được sắp theo thứ tự tăng dần. Hãy tận dụng tính sắp xếp của 2 dãy và tạo dãy c0 , c1 ,..., cm+n-1 là hợp của 2 dãy trên, sao cho dãy ci cũng có thứ tự tăng dần .

3:40 AM |
import java.util.Arrays;
import java.util.Scanner;
public class Main {
    public static int nhap(){
                        Scanner input= new Scanner(System.in);
                        boolean check= false;
                        int n=0;
                        while(!check){
                                    System.out.print(" ");
                                    try{
                                                n= input.nextInt();
                                                check= true;
                                    }catch(Exception e){
                                                System.out.println("Ban phai nhap so! hay nhap lai...");
                                                input.nextLine();
                                    }
                        }
                        return (n);
            }
    public static void inArray(int[] a, int begin , int end){
                        System.out.println();
                        int i;
                        for(i=begin ; i<end ; i++){
                                    System.out.print(" "+a[i]);
                        }
                        System.out.println();
            }
    public static void themPhanTu(int[] a,int n,int pt){
                        a[0]= pt;
                        Arrays.sort(a);
            }
    public static void main(String[] args) {
                System.out.println("Nhap n");
                        int n= nhap();
                        System.out.println("Nhap m");
                        int m= nhap();
                        int i;
                        int[] a= new int[n+m];
                        int[] b= new int[m];
                        //Nhap vao mang A va sap xep theo thu tu tang dan
                        System.out.println("nhap mang A: ");
                        for(i=0 ; i<n ; i++){
                                    System.out.print("\n Nhap phan tu thu "+i+" = ");
                                    a[i]= nhap();
                        }
                        Arrays.sort(a);
                        //Nhap vao mang B va sap xep theo thu tu tang dan
                        System.out.println("nhap mang B: ");
                        for(i=0 ; i<m ; i++){
                                    System.out.print("\n Nhap phan tu thu "+i+" = ");
                                    b[i]= nhap();
                        }
                        Arrays.sort(b);
                        //Gop mang b vao mang a
                        for(i=0 ; i<m ; i++){
                                    themPhanTu(a, n+m+1, b[i]);
                        }
                        inArray(a, 0, n+m);

    }}


Bài 11. Viết chương trình liệt kê tất cả các hoán vị của 1, 2, .., n.

3:37 AM |
import java.util.Scanner;
public class Main {
    public static int nhap(){
                        Scanner input= new Scanner(System.in);
                        boolean check= false;
                        int n=0;
                        while(!check){
                                    System.out.print(" ");
                                    try{
                                                n= input.nextInt();
                                                check= true;
                                    }catch(Exception e){
                                                System.out.println("Ban phai nhap so! hay nhap lai...");
                                                input.nextLine();
                                    }
                        }
                        return (n);
            }
    public static void main(String[] args) {
        System.out.print("Nhap n");
                        int n= nhap();
                        int[] array= new int[n+2];
                        int i,j,k=n-1,temp,check=1;
                        for(i=0 ; i<n ; i++){
                                    array[i]= i+1;
                        }
                        System.out.println("Cac hoan vi ke la: ");
                        try{
                                    i= n-2;
                                    while(check>0){
                                                //In ra hoan vi
                                                System.out.println("   ");
                                                for(j=0 ; j<n ; j++){
                                                            System.out.print(" "+array[j]);
                                                }
                                                for(i= n-2 ; i>=0 ; i--){
                                                            check= 1;
                                                if(array[i] < array[i+1]){
                                                            if(i==n-2){
                                                                        temp= array[i];
                                                                        array[i]= array[n-1];
                                                                        array[n-1]= temp;
                                                                        break;
                                                            }
                                                            else{
                                                                        //Tim so a[k] nho nhat ma >a[i] trong cac so ben phai a[i]
                                                                        k= i+1;
                                                                                    for(j=i+1 ; j<n ; j++){
                                                                                                if(array[i+1]>array[j] && array[j]>array[i]) k=j;

                                                                                    }
                                                                                    //Doi cho a[k] va a[i]
                                                                                    temp= array[i];
                                                                                    array[i]= array[k];
                                                                                    array[k]= temp;
                                                                        //Sap xep lai tu a[i+1] toi a[n]
                                                                        for(j=i+1 ; j<n ; j++){
                                                                                    for(int m= i+1 ; m<n ; m++){
                                                                                                if(array[j]<array[m]){
                                                                                                            temp= array[j];
                                                                                                            array[j]= array[m];
                                                                                                            array[m]= temp;
                                                                                                }
                                                                                    }
                                                                        }
                                                                        break;
                                                            }
                                                }
                                                else {
                                                            check=0;
                                                //          break;
                                                }
                                                }
                                                //if(i==0)check=0;
                                    }
                        }catch(Exception e){}
    }

}

Bài 10. Viết chương trình liệt kê tất cả các tập con k phần tử của 1, 2, ..,n (k≤n).

3:19 AM |
import java.util.Scanner;
public class Main {
    public static int nhap(){
                        Scanner input= new Scanner(System.in);
                        boolean check= false;
                        int n=0;
                        while(!check){
                                    System.out.print(" ");
                                    try{
                                                n= input.nextInt();
                                                check= true;
                                    }catch(Exception e){
                                                System.out.println("Ban phai nhap so! hay nhap lai...");
                                                input.nextLine();
                                    }
                        }
                        return (n);
            }
    public static void result(int a[],int k){
                        int i;
                        System.out.println();
                        for(i=1 ; i<=k ; i++){
                                    System.out.print("  "+a[i]);
                        }
            }
            public static void try_backTrack(int a[], int n, int k, int i){
                        int j;
                        for(j=a[i-1]+1 ; j<=(n-k+i) ; j++){
                                    a[i]= j;
                                    if(i== k) result(a,k);
                                    else try_backTrack(a, n, k, i+1);
                        }
            }
    public static void main(String[] args) {
        System.out.println("Nhap n");
                        int n= nhap();
                        int[] array= new int[n+1];
                        int k;
                        System.out.println("Liet ke tat ca cac tap con k phan tu cua 1,2,..,"+n+" : ");
                        for(k=1 ; k<=n ; k++){
                                    System.out.println("\n Tap con "+k+" phan tu: ");
                                    try_backTrack(array,n,k,1);
                        }
    }

}




Bài 9. Viết chương trình liệt kê tất cả các xâu nhị phân độ dài n.

3:18 AM |
import java.util.Scanner;
public class Main {
    public static int nhap(){
                        Scanner input= new Scanner(System.in);
                        boolean check= false;
                        int n=0;
                        while(!check){
                                    System.out.print(" ");
                                    try{
                                                n= input.nextInt();
                                                check= true;
                                    }catch(Exception e){
                                                System.out.println("Ban phai nhap so! hay nhap lai...");
                                                input.nextLine();
                                    }
                        }
                        return (n);
            }
    public static void main(String[] args) {
       System.out.println("Nhap n");
                        int n= nhap();
                        int[] array= new int[n];
                        int tich;
                        do{
                                    tich= 1;
                                    //In ra mang va tinh tich cac phan tu trong mang
                                    System.out.println("");
                                    for(int j=0 ; j<n ; j++){
                                                System.out.print(" " +array[j]);
                                                tich*= array[j];
                                    }
                                    int i=n-1;
                                    do{
                                                if(array[i]==0){
                                                            array[i]=1;
                                                            for(int j=n-1 ; j>i ;j--){
                                                                        array[j]= 0;
                                                            }
                                                            break;
                                                }
                                                else i--;
                                    }while(i>=0);
                        }while(tich!=1);
    }

}


Bài 8. Một số được gọi là số thuận nghịch độc nếu ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn nhận được một số giống nhau. Hãy liệt kê tất cả các số thuận nghịch độc có sáu chữ số (Ví dụ số: 558855).

3:15 AM |
public class Main {

   
    public static boolean testSoThuanNghich(int n){
                        StringBuilder xau= new StringBuilder();
                        String str= ""+n;
                        xau.append(str);
                        String check= ""+xau.reverse();
                        if(str.equals(check)) return true;
                        else return false;
            }
    public static void main(String[] args) {
        int n,count=0;
                        for(n=100000 ; n<= 999999 ; n++){
                                    if(testSoThuanNghich(n)){
                                                System.out.println(n);count++;
                                    }
                        }
                        System.out.println("Co "+count+" so thuan nghich co 6 chu so");
    }


}

Bài 7. Dãy số Fibonacci được định nghĩa như sau: F0 =1, F1 = 1; Fn = Fn-1 + Fn-2 với n>=2. Hãy viết chương trình tìm số Fibonacci thứ n.

3:14 AM |
import java.util.Scanner;
public class Main {

   
    public static int nhap(){
                        Scanner input= new Scanner(System.in);
                        boolean check= false;
                        int n=0;
                        while(!check){
                                    System.out.print(" ");
                                    try{
                                                n= input.nextInt();
                                                check= true;
                                    }catch(Exception e){
                                                System.out.println("Ban phai nhap so! hay nhap lai...");
                                                input.nextLine();
                                    }
                        }
                        return (n);
            }
    public static void main(String[] args) {
        System.out.print("Nhap n");
                        int n= nhap();
                        int[] f= new int[n+1];
                        f[0]= 1; f[1]= 1;
                        for(int i=2;i<=n;i++){
                                    f[i]= f[i-1]+f[i-2];
                        }
                        System.out.println("So Fibonanci thu "+n+" la: f["+n+"]= "+f[n]);
    }


}