zoukankan      html  css  js  c++  java
  • 贪心算法求解活动安排<算法分析>

    一、实验内容及要求
     1.要求按贪心算法原理求解问题;
     2.要求手工输入s[10]及f[10],其中注意自己判断s[i]<f[i];
     3.要求显示所有活动及最优活动安排的i事件列表。
    二、实验步骤
     1、手工输入活动事件;
     2、输出活动s数组及f数组;
     2、计算最优活动安排后,输出最优i事件列表。


    输入:
    请输入s数组:

    请输入f数组:

    输出
    s=15,3,2,8.....
    f=18,5,4,10.....
    i=1,5,8

    Java源代码:

    package shiyan;
    import java.util.Scanner;
    public class shiyan3 {  
    	public static void main(String[] args) { 
    		int number=10;						//活动数量10个
    		int[] s = new int[number];			//开始时间数组
    		int[] f = new int[number];			//结束时间数组	   
    		System.out.println("请分别输入"+number+"个活动的开始时间:");
    		Scanner in_s = new Scanner(System.in);//循环输入开始时间数组
    		for(int i=0;i<number;i++){
    			s[i]=in_s.nextInt();}
    		System.out.println("请分别输入"+number+"个活动的结束时间:");
    		Scanner in_f = new Scanner(System.in);//循环输入结束时间数组
    		for(int i=0;i<number;i++){
    		    f[i]=in_f.nextInt();}
    		System.out.println("开始时间数组s[10]:");
    		for(int i=0;i<number;i++){			  //输出两个数组
    			System.out.print("["+s[i]+"]"); }
    		System.out.println("
    结束时间数组f[10]:");
    		for(int i=0;i<number;i++){			  
    			System.out.print("["+f[i]+"]"); }
    	      boolean[] a=new boolean[s.length];  //一个与活动数目等长的 boolean型数组记录每个活动的状态
    	      shiyan3 ac = new shiyan3();  
    	      int counts=ac.Activity_arrangement(s, f, a);  
    	        System.out.println("
    活动集合中最大相容活动数量为:"+counts);  
    	        for(int i=1;i<=s.length-1;i++){  
    	            if(a[i]){  
    	                System.out.println("第"+i+"活动被选中,其开始时间为:"+s[i-1]+",结束时间为:"+f[i-1]);  }   }   }  
    	public int Activity_arrangement(int[] s,int[] f,boolean[] a){  
    	   int n=s.length-1;  
    	     a[1]=true;						//第一个活动被选中  
    	       int j=1;  
    	       int count=1;					//被选中活动的数量,默认第一个活动被选中  
    	       for(int i=2;i<=n;i++){  
    	           if(s[i]>=f[j]){			//下一个活动开始时间大于大于等于上一个活动结束时间  
    	                a[i]=true;  
    	                j=i;  
    	              count++;  }  
    	           else{  
    	               a[i]=false;  
    	          }  
    	       }  
    	        return count;  

     运行结果如下:

     

  • 相关阅读:
    Delete 语句带有子查询的sql优化
    标量子查询SQL改写
    自定义函数导致的sql性能问题
    Oracle 11G RAC For ASM 利用RMAN COPY进行存储迁移
    WPF 如何控制右键菜单ContextMenu的弹出
    将字符串以用二进制流的形式读入XML文件
    WPF 将数据源绑定到TreeView控件出现界面卡死的情况
    WPF如何实现TreeView节点重命名
    Azure一个Cloud Service支持多个公网地址
    Azure上部署Barracuda WAF集群 --- 2
  • 原文地址:https://www.cnblogs.com/soulsjie/p/6829437.html
Copyright © 2011-2022 走看看