桥梁建设的java解决方案没有返回正确答案

桥梁建设的java解决方案没有返回正确答案,java,arrays,Java,Arrays,我的代码有问题,它返回1,而它应该返回2。我有两对:新城市公园(6,2),新城市公园(4,3),新城市公园(2,6),新城市公园(1,5)。它应该返回2个桥,但返回1个。下面是我的代码 class CityPairs { int north, south; public CityPairs(int north, int south){ this.north = north; this.south = south; } } class C

我的代码有问题,它返回1,而它应该返回2。我有两对:新城市公园(6,2),新城市公园(4,3),新城市公园(2,6),新城市公园(1,5)。它应该返回2个桥,但返回1个。下面是我的代码

class CityPairs {
    int north, south;
    public CityPairs(int north, int south){
        this.north = north;
        this.south = south;
    }

}

class CityPairsDriver {


    // function to find the maximum number
    // of bridges that can be built
    static int maxBridges(CityPairs values[], int n) {
        int lis[] = new int[n];
        for (int i = 0; i < n; i++)
            lis[i] = 1;

        Arrays.sort(values, new Comparator<CityPairs>() {
            @Override
            public int compare(CityPairs a, CityPairs b) {
                if (a.south == b.south)
                    if (a.north < b.north)
                        return -1;
                    else
                        return 1;
                else {
                    if (a.south < b.south)
                        return 1;
                    else
                        return 1;
                }
            }

        });

        // logic of longest increasing subsequence
        // applied on the northern coordinates
        for (int i = 1; i < n; i++)
            for (int j = 0; j < i; j++)
                if (values[i].north >= values[j].north && lis[i] < 1 + lis[j])
                    lis[i] = 1 + lis[j];

        int max = lis[0];
        for (int i = 1; i < n; i++)
            if (max < lis[i])
                max = lis[i];

        // required number of bridges
        // that can be built
        return max;
    }

    // Driver program to test above
    public static void main(String args[]) {
        CityPairs values[] = { new CityPairs(6, 2), new CityPairs( 4, 3 ), new CityPairs( 2, 6) , new CityPairs( 1, 5 ) };
        int n = 4;
        System.out.println("Maximum number of bridges = " + maxBridges(values, n));
    }

}
class城市空气{
北部、南部;
公共城区(内北、内南){
this.north=north;
这个。南=南;
}
}
城市驾驶员{
//函数来查找最大数
//可以建造的桥梁的数量
静态整型maxBridges(CityPairs值[],整型n){
int lis[]=新的int[n];
对于(int i=0;i=值[j].north&&lis[i]<1+lis[j])
lis[i]=1+lis[j];
int max=lis[0];
对于(int i=1;i
我的回答基于以下几点:


您有3个返回相同的值,我想您需要更改最后一个 所以你的问题是比较函数