首页 新闻 会员 周边

算法题,用Java实现修路所用最短长度

0
悬赏园豆:15 [待解决问题]

一段路上有N个故障点(每个故障点为一个单位长度),一个故障点要占用3个单位长度去修,故障点间占用的长度可以重合,求修路占用的最小长度。

例:
输入:
4 3(4为N代表4个故障点,3代表3个单位一修)
5 19 8 21(第二行是4个故障点的位置)
输出:
7

加油姐妹的主页 加油姐妹 | 初学一级 | 园豆:187
提问于:2018-07-18 15:13
< >
分享
所有回答(1)
0

看懂了  

5,19,8,21 应该是9个长度吧 

567 

8910

19  20 21

 

   public static void main(String[] args) {

        int zydw=3;  //一次修所用的长度
        int[] arr=new int[]{5,19,8,21};//故障点
        int zxcd=0; //最小长度
        //冒泡排序练习

        for(int i=0;i<arr.length-1;i++){//外层循环控制排序趟数
            for(int j=i;j<arr.length-1-i;j++){ //内层循环控制每一趟排序多少次
                if(arr[j]>arr[j+1]){
                int temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
                }
            }
        }

        for(int i=0;i<arr.length;i++){
            for(int j=i;j<arr.length;j++){
                if(arr[i]<=arr[j]&&arr[j]<=arr[i]+zydw-1){
                    continue;
                }else{
                    i=j;
                    break;
                }
            }
            zxcd+=zydw;
        }

        System.out.println(zxcd);
    }
不断努力的青春 | 园豆:178 (初学一级) | 2018-07-27 14:49

不是,求最短长度,5,6,7和6,7,8,所以修故障点5和8只用4个长度,加上19,21用的3个长度,一共要修7个长度

支持(0) 反对(0) 加油姐妹 | 园豆:187 (初学一级) | 2018-07-27 15:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册