zoukankan      html  css  js  c++  java
  • 活动安排问题

    活动安排问题

    一问题分析
    enter description here
    二代码实现

    java
    package greedySelctor;

    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.Comparator;

    public class bin
    {

    public static void main(String[] args) throws IOException
    {
    

    // int []s= {0,1,3,0,5,3,5,6,8,8,2,12};
    // int []f= {0,4,5,6,7,8,9,10,11,12,13,14};
    int []s= {0,1,2,3,4,5,6};
    int []f= {0,10,9,8,7,11,20};
    element []ele=new element[s.length-1] ;
    for(int i=1; i<s.length; i++)
    {
    ele[i-1] =new element(s[i], f[i], i);
    }
    greedySelctor myGreedySelctor=new greedySelctor(ele);
    }

    }
    class greedySelctor
    {
    element []ele;
    int count=0; //被安排活动的个数
    public greedySelctor(element []ele) throws IOException
    {
    this.ele=ele;
    GreedySelctor();
    display();
    }
    public void GreedySelctor()
    {
    Arrays.sort(ele, new Comparator(){
    //传入的时候由用户自己选
    @Override
    public int compare(element o1, element o2) {
    // TODO Auto-generated method stub
    int finsh1 = o1.f;
    int finsh2 = o2.f;
    if (finsh1>finsh2)
    {
    return 1;
    }
    else
    {
    if (finsh1<finsh2)
    {
    return -1;
    }else
    {
    return 0;
    }

    		    }
    			
    		}
    	});
    	ele[0].x=1;  //第一个活动一定会被选上
    	int f=ele[0].f;
    	count++;
    	for(int i=1; i<ele.length; i++)
    	{
    		if(f<=ele[i].s)  //安排
    		{
    		   ele[i].x=1;
    		   f=ele[i].f;
    		}
    		else
    		{
    			ele[i].x=0;
    		}
    	}
    }
    public void display() throws IOException
    {
    	BufferedWriter fout=new BufferedWriter(new FileWriter("out.txt"));
    	for(int i=0; i<ele.length; i++)
    	{
    		fout.write("ele["+i+"]:");
    		fout.newLine();
    		fout.write("i:	"+ele[i].i);
    		fout.newLine();
    		fout.write("s:	"+ele[i].s);
    		fout.newLine();
    		fout.write("f:	"+ele[i].f);
    		fout.newLine();
    		fout.write("x:	"+ele[i].x);
    		fout.newLine();
    	    fout.write("+++++++++++++++++++");
    	    fout.newLine();
    	}
    	fout.flush();
    }
    

    }
    class element //活动类
    {
    int s; //开始时间
    int f; //结束
    int x; //是否被选中
    int i; //编号
    public element(int s,int f,int i)
    {
    this.s=s;
    this.f=f;
    this.i=i;
    }
    }

    三 运行结果
    ele[0]:
    i: 1
    s: 1
    f: 4
    x: 1
    +++++++++++++++++++
    ele[1]:
    i: 2
    s: 3
    f: 5
    x: 0
    +++++++++++++++++++
    ele[2]:
    i: 3
    s: 0
    f: 6
    x: 0
    +++++++++++++++++++
    ele[3]:
    i: 4
    s: 5
    f: 7
    x: 1
    +++++++++++++++++++
    ele[4]:
    i: 5
    s: 3
    f: 8
    x: 0
    +++++++++++++++++++
    ele[5]:
    i: 6
    s: 5
    f: 9
    x: 0
    +++++++++++++++++++
    ele[6]:
    i: 7
    s: 6
    f: 10
    x: 0
    +++++++++++++++++++
    ele[7]:
    i: 8
    s: 8
    f: 11
    x: 1
    +++++++++++++++++++
    ele[8]:
    i: 9
    s: 8
    f: 12
    x: 0
    +++++++++++++++++++
    ele[9]:
    i: 10
    s: 2
    f: 13
    x: 0
    +++++++++++++++++++
    ele[10]:
    i: 11
    s: 12
    f: 14
    x: 1
    +++++++++++++++++++

    四 总结收获

    1. 贪心算法的关键在于问题具有贪心性质

    2. 学习到了对象数组排序的方法
      Arrays.sort(ele, new Comparator(){
      //传入的时候由用户自己选
      @Override
      public int compare(element o1, element o2) {
      // TODO Auto-generated method stub
      int finsh1 = o1.f;
      int finsh2 = o2.f;
      if (finsh1>finsh2)
      {
      return 1;
      }
      else
      {
      if (finsh1<finsh2)
      {
      return -1;
      }else
      {
      return 0;
      }

      	    }
      		
      	}
      });
      
      具体解释见链接(https://blog.csdn.net/qq_37937537/article/details/80445731)
      

      五 不足
      代码写的不够熟练

  • 相关阅读:
    环境是如何建立的 启动文件有什么
    环境中存储的是什么
    串行 并行 异步 同步
    TPC-H is a Decision Support Benchmark
    进程通信类型 管道是Linux支持的最初Unix IPC形式之一 命名管道 匿名管道
    删除环境变量
    14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚
    14.3.2.2 autocommit, Commit, and Rollback 自动提交 提交和回滚
    14.3.2.1 Transaction Isolation Levels 事务隔离级别
    14.3.2.1 Transaction Isolation Levels 事务隔离级别
  • 原文地址:https://www.cnblogs.com/Howbin/p/9917997.html
Copyright © 2011-2022 走看看