时间:2021-05-19
本文实例讲述了java实现的海盗算法。分享给大家供大家参考,具体如下:
前面介绍了《C#实现的海盗分金算法》,这里再给出一个Java优化版的算法:
package unit4;public class Pirate{ private String name; private int[] schemes; private int index; public Pirate(int t,int i) { name="unknow"; index=i; schemes=makeSchemes(t); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getIndex(){return index;} public int[] getSchemes() {return schemes;} public int handvote(int table[]) { return myhandvote(table,index); } private int myhandvote(int []t,int i) { if(t[i]==0) return 0; if(i==1) return 0; return 1; } public int[] makeSchemes(int t) { int vote=0; schemes =new int[t-index]; do{ for(int i=0;i<schemes.length;i++){ schemes[i]=(i+1)%2; } for(int i=0;i<schemes.length;i++){ vote=vote+myhandvote(schemes,i); } }while(!(2*vote>t/2)); return schemes; }}package unit4;public class Judger { int[] allot; Pirate[] pirates; public Judger(Pirate []pirates,int[]a) { this.pirates=pirates; allot=a; } public int[] getAllot() { return allot; } public void setAllot(int[] allot) { this.allot = allot; } public Pirate[] getPirates() { return pirates; } public void setPirates(Pirate[] pirates) { this.pirates = pirates; } public boolean evaluate(){ int vote=0; for(int i=0;i<pirates.length;i++){ vote+=pirates[i].handvote(allot); } if(2*vote>=pirates.length) return true; else return false; }}package unit4;public class MaxInterest { public static void main(String[] args) { int piratecounts=5; Pirate[]pirates=new Pirate[piratecounts]; for(int i=0;i<piratecounts;i++){ pirates[i]=new Pirate(piratecounts,i); pirates[i].setName("name"+i); } int[]table =pirates[0].getSchemes(); Judger ajudge=new Judger(pirates,table); if(ajudge.evaluate()){ int[]scheme=ajudge.getAllot(); for(int i=0;i<scheme.length;i++) System.out.println(" "+scheme[i]); } }}更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C#实现的海盗分金算法。分享给大家供大家参考,具体如下:海盗分金的故事5个海盗抢到了100颗宝石,每一颗都一样的大小和价值连城。他们决定这么分:1
本文实例讲述了java实现的n*n矩阵求值及求逆矩阵算法。分享给大家供大家参考,具体如下:先来看看运行结果:java版的写出来了,用的跟c语言相同的算法,然后看
本文实例讲述了Java实现求子数组和的最大值算法。分享给大家供大家参考,具体如下:一般C和C++在算法实现中使用较多,下面我们通过java语言实现算法,更有亲切
递归算法是一种直接或者间接调用自身函数或者方法的算法。Java递归算法是基于Java语言实现的递归算法。递归算法的实质是把问题分解成规模缩小的同类问题的子问题,
java算法之快速排序实现代码摘要:常用算法之一的快速排序算法的java实现原理:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列