zoukankan      html  css  js  c++  java
  • Algs4-1.4.14 4-sum

    1.4.14  4-sum。为4-sum设计一个算法。
    答:
    import java.util.Arrays;
    public class FourSum
    {
        public static int count1(int[] a)
        {
            int cnt=0;
            for(int i=0;i<a.length;i++)
                for(int j=i+1;j<a.length;j++)
                    for(int k=j+1;k<a.length;k++)
                        for(int l=k+1;l<a.length;l++)
                            if(a[i]+a[j]+a[k]+a[l]==0)
                               cnt++;
            return cnt;
        }
       
        public static int count2(int[] a)
        {
           int cnt=0;
            Arrays.sort(a);
           for(int i=0;i<a.length;i++)
              for(int j=i+1;j<a.length;j++)
                 for(int k=j+1;k<a.length;k++)
                    if (BinarySearch.rank(-a[i]-a[j]-a[k],a)>k)
                          cnt++;
            return cnt;
        }
       
        public static int count3(int[] a)
        {
            int k;
            int l;
            int cnt=0;
            int sum;
            Arrays.sort(a);
            for(int i=0;i<a.length;i++)
                for (int j=i+1;j<a.length;j++)
                   {
                      k=j+1;
                      l=a.length-1;
                      while(k<l)
                     {
                        sum=a[i]+a[j]+a[k]+a[l];
                        if(sum==0)
                        {
                          k++;
                          l--;
                          cnt++;
                        }
                    else if(sum>0)
                        l--;
                    else
                        k++;
                }//end while
            }//end for
            return cnt;
        }//end count
       
        public static void main(String[] args)
        {
            int[] a=In.readInts(args[0]);
            StdOut.println(count1(a));
            StdOut.println(count2(a));
            StdOut.println(count3(a));
        }
    }

  • 相关阅读:
    sql练手
    简单工厂模式和抽象工厂模式的区别:面向接口编程
    UML中聚合和组合的关系(笔记)
    如何修改SQL Server 2005服务器名称 (装载)
    .NET 图片处理剪裁
    sql server 中的汉字转化为拼音
    sql server while, case,if..else ... try catch ..对象
    String 和 StringBuilder 的相同点和不同点
    sql 折分字符串并修改数据库表中数据
    SQL Server 与 Excel,Access 数据表的导入导出(注:参照博园.NET大观)
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854424.html
Copyright © 2011-2022 走看看