zoukankan      html  css  js  c++  java
  • 算法学习之基础(背包 列队 栈) 习题1.3.34随机背包的实现

    背包的API

    void add()

    int size()

    boolean isEmpty()

    背包的遍历用Iterator

    代码、

     1 package gh;
     2 
     3 import java.util.Iterator;
     4 /**
     5  * 随机背包
     6  * @author ganhang
     7  *
     8  * @param <T>
     9  */
    10 public class RandomBag<T>implements Iterable<T> {
    11     private int n;//元素数量
    12     private T [] bag;
    13     public RandomBag(int max){
    14         bag=(T[])new Object[max];
    15     }
    16     public boolean isEmpty(){
    17         return n==0;
    18     }
    19     
    20     public int size(){
    21         return n;
    22     }
    23     public void add(T item){
    24         bag[n++]=item;
    25     }
    26 
    27     @Override
    28     public Iterator<T> iterator() {
    29         // TODO Auto-generated method stub
    30         return new RandomBagIterator();
    31     }
    32     private class RandomBagIterator implements Iterator<T>{
    33         public RandomBagIterator(){
    34             shuffle(bag);//构造函数中随机排列下数组中的元素
    35         }
    36         private void shuffle(T b[]){//数组的随机排序
    37             int N=b.length;
    38             for(int i=0;i<N;i++){
    39                 int r=i+(int)(Math.random()*(N-i));
    40                 T temp=b[i];
    41                 b[i]=b[r];
    42                 b[r]=temp;
    43             }
    44         }
    45         @Override
    46         public boolean hasNext() {
    47             // TODO Auto-generated method stub
    48             return n!=0;
    49         }
    50 
    51         @Override
    52         public T next() {
    53             // TODO Auto-generated method stub
    54             return bag[--n];
    55         }
    56 
    57         @Override
    58         public void remove() {
    59             // TODO Auto-generated method stub
    60             
    61         }
    62         
    63     }
    64     
    65 }
  • 相关阅读:
    第一课基础知识
    Linux基础命令
    IO&Process基础知识
    caffe-windows 运行matlab 接口的例子
    process 3d image using caffe
    caffe-windows配置 cuda6.5+vs2012
    cuda7.0安装windows+vs2012
    SGD步长
    Exercise: Convolutional Neural NetworkCNN的反向求导及练习
    Create sparse matrix:sparse
  • 原文地址:https://www.cnblogs.com/ganhang-acm/p/5406462.html
Copyright © 2011-2022 走看看