• java 小算法


     //鸡兔同笼 20个头 58腿
            for(int a=0;a<=20;a++) {
                int b = 20-a;
                if((2*b+4*a)==58) {
                    System.out.println(a+","+b);
                }
            }
    //百钱买百鸡 公鸡 3 母鸡 2 小鸡一元三只
        //方法一:这种方法是错的 原因c/3  这个根据钱的数量进行循环
        for(int i=0;i<100;i++) {
            for(int j=0;j<100;j++) {
                int c = 100-i-j;
                if((i*3+j*2+c/3)==100) {
                    System.out.println(i+","+j+","+c);
                }
            }
        }
    //方法2:还可以根据数量进行循环
        for(int a=0;a<=33;a++) {
            int x = (100-a*3)/2; //母鸡的数量
            for(int b=0;b<=x;b++) {
                int c = 100-a-b;
                if(c%3!=0)continue;
                if((a*3+b*2+c/3)==100) {
                    System.out.println(a+","+b+","+c);
                }
                
            }
        }
        //冒泡排序
            int[] a = {4,5,3,6,8,7,9};
            
            for(int i=0;i<a.length-1;i++) {
                for(int j=0;j<a.length-1-i;j++)
                if(a[j]<a[j+1]) {
                    int t=a[j];
                    a[j]=a[j+1];
                    a[j+1]=t;
                    
                }
            }
            for(int i=0;i<a.length;i++) {
                System.out.print(a[i]+"	");    
            }
            
        //选择排序
            int[] a = {1,5,3,6,8,7,9};
            
            for(int i=0;i<a.length-1;i++) {
                for(int j=i+1;j<a.length;j++) {
                    
                    if(a[i]>a[j]) {
                        int t = a[i];
                        a[i] = a[j];
                        a[j] =t;
                    }
                }
            }
            for(int i=0;i<a.length;i++) {
                System.out.print(a[i]);
            }
    public class departSort {
      public static void main(String[] args) {
            int[] a = {2,4,6,7,9};
            //二分查找算法  
        
            
            System.out.println(search(a,7,0,a.length-1));
            
    }
    
    private static int search(int[] a, int value, int start, int end) {
        // TODO Auto-generated method stub
         if(start>end) {
                return -1;
            }
        int middle = (start+end)/2;
        int middleValue  = a[middle];
       
    
        if(value>middleValue) {
            return search(a, value, middle+1, end);
        }
        else if(value<middleValue) {
            return search(a, value, start, middle-1);
        }
        else return middle;
        
      }
    }
    //查重算法1
         int[] a = {2,1,6,4,5,6,1,4,2};
         int b = 012;
         System.out.println(b);
            //查重算法  112244566
            Arrays.sort(a);
            boolean flag = false;
            for(int i=0;i<a.length-1;i+=2) {
                if(a[i]!=a[i+1]) {
                    flag = true;
                    System.out.println(a[i]);
                    break;
                }
                
            }
            if(!flag) {
                System.out.println(a[a.length-1]);                                                                                                                      
                
            }
            
    //查重算法二:充分利用异或相同为0不同为1
          int[] a= {1,4,4,6,7,9,6,7,1};
          int result=0;
          for(int i=0;i<a.length;i++) {
              result ^= a[i];
          }
          System.out.println(result);     
    //桶排序
            int[] a= {1,5,3,6,2,3,4,6,9};
            int[] b = new int[21];
            for(int i=0;i<a.length;i++) {
                b[a[i]]++;
            }
            for(int i=0;i<a.length;i++) {
                //b[i]中有几个数就循环打印几次
                for(int j=1;j<=b[i];j++) {
                    System.out.print(i+"	");
                }
            }
    import java.util.Scanner;
    public class Test24{
     public static void main(String[] args){ 
         Scanner sc =  new Scanner(System.in);
          int n = sc.nextInt();
        for(int i=1;i<=n;i++){
         for(int j=1;j<=n-(i-1);j++){
             System.out.print(j+"	"); 
        }
          System.out.println(); 
        }
     
     }
     
    }

    import java.util.Scanner;
    public class Test25{
       public static void main(String[] args){ 
          System.out.println("请输入一个正整数:");
          Scanner s = new Scanner(System.in);
        int n = s.nextInt(); 
        for(int i=1;i<=n;i++){
          for(int j=1;j<=n-i;j++){
            System.out.print(" "); 
         }
          for(int j=1;j<=2*i-1;j++){
            System.out.print("*"); 
         }
            System.out.println(); 
      }
      }
      }

    //. 验证哥德巴赫猜想:任何一个大于 6 的偶数,都能分解成两个质数的和。
    //要求输入一个整数,输出 这个数能被分解成哪两个质数的和。
    //例如:输入一个整数 14 输出结果:14=3+11 14=7+7

    public class Exc13{
        public static void main(String[] args){
            java.util.Scanner s = new java.util.Scanner(System.in);
            int n= s.nextInt();
            
            if (n <= 6 || n % 2 !=0) {
                System.out.println("输入有误");
                return ;
            }
            //一个数的加数最多是这两个加数相同,否则必定会一个大于1/2另外一个小于1/2 
            //所以循环的时候只需要循环一个数的1/2即可只要找到一个必定会找到另外一个
            for(int a = 3 ; a <= n/2 ; a+=2){
                int b = n-a;
                //判断加数是不是质数
                if (isPrime(a) && isPrime(b) ){
                    System.out.println(a+"+"+b);
                }
            }
        }
        
        public static boolean isPrime(int x){
        
            double d = Math.sqrt(x);
            for(int i = 3 ; i <= d ; i+=2){
                if (x % i == 0) return false;
            }
            return true;
        }
    }
    12. 编程:如果整数 A 的全部因子(包括 1,不包括 A 本身)之和等于 B,且整数 B 的全部因子包
    括 1,不包括 B 本身)之和等于 A,则称整数 AB 是一对亲密数;求 3000 以内的全部亲密数。 
     
    public class Test12 {
    public static void main(String[] args) {
    for (int i = 1; i <= 3000; i++) {
       int b = sumAllFact(i); // i的因子和为b
       int a = sumAllFact(b); // b的因子和为a
    // 分析:如果a == i,意味着a的因子和为b,
    // b的因子和为a,满足亲密数的要求
    // 同时,为了避免重复解,要求a < b
    if (a < b && a == i) {
      System.out.println(a + " " + b);
        }
       }
    }
    // 计算因子和的函数
    public static int sumAllFact(int n) {
      int sum = 0;
    for (int i = 1; i <= n / 2; i++) {
       if (n % i == 0)
       sum += i;
       }
       return sum;
      }
    }

     在国际象棋的棋盘上, 放置8个皇后, 要求任何两个皇后之间,不能相互吃掉, 请输出所有的放置的可能

     
    public class EightQueen {
        public static void main(String[] args) {
            
            int[] a = new int[8]; //a[i]=j  第i行的皇后放在第j列
            place(a , 0);
        }
        
        //计算第row行的皇后放在第几列 a[row]=?
        static void place(int[] a , int row){
            if (row == 8) {
                for(int i = 0 ; i < 8 ; i++){
                    System.out.print(a[i]+"	");
                }
                System.out.println();
                return;
            }
            
            //把第row行的皇后放好
            outer:for(a[row] = 0; a[row] < 8;a[row]++){
                //判断a[row] 和 前面的row行是不是冲突
                for(int i = 0 ; i< row; i++){
                    //判断a[row] 和 a[i]是不是冲突
                    if(a[row]==a[i] || a[row]-a[i]==row-i || a[row]-a[i]==i-row)
                        continue outer;
                }
                //放下一行
            
                place(a , row+1);
            }
            
            
        }
        
    
    }
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    hdu 5475(打破固定思维OR线段树)
    hdu 2521 反素数(打表)
    hdu 4540(dp)
    hdu 4535(排列组合之错排公式)
    hdu 4530(数学)
    hdu 4528(搜索好题)
    hdu 4522(图论,构图)
    kalinux 换源
    用python进行wifi密码生成
    hashcat 中文文档
  • 原文地址:https://www.cnblogs.com/zhulina-917/p/11214714.html
Copyright © 2020-2023  润新知