﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-feezh-最新评论</title><link>http://www.blogjava.net/afei2012/CommentsRSS.aspx</link><description>我们之所以努力赚钱，是为了让父母为自己买东西时能像给我们买东西时一样大方!</description><language>zh-cn</language><pubDate>Fri, 12 Oct 2012 06:47:53 GMT</pubDate><lastBuildDate>Fri, 12 Oct 2012 06:47:53 GMT</lastBuildDate><generator>cnblogs</generator><item><title>re: [java经典算法题]有n个人围成一圈，顺序排号。从第一个人开始报数（从1到3报数），凡报到3的人退出圈子，问最后留下的是原来第几号的那位？</title><link>http://www.blogjava.net/afei2012/archive/2012/06/17/380544.html#380954</link><dc:creator>afei</dc:creator><author>afei</author><pubDate>Sun, 17 Jun 2012 07:41:00 GMT</pubDate><guid>http://www.blogjava.net/afei2012/archive/2012/06/17/380544.html#380954</guid><description><![CDATA[@walnutprince<br>谢谢，学习了<img src ="http://www.blogjava.net/afei2012/aggbug/380954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/afei2012/" target="_blank">afei</a> 2012-06-17 15:41 <a href="http://www.blogjava.net/afei2012/archive/2012/06/17/380544.html#380954#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: [java经典算法题]有n个人围成一圈，顺序排号。从第一个人开始报数（从1到3报数），凡报到3的人退出圈子，问最后留下的是原来第几号的那位？</title><link>http://www.blogjava.net/afei2012/archive/2012/06/15/380544.html#380870</link><dc:creator>walnutprince</dc:creator><author>walnutprince</author><pubDate>Fri, 15 Jun 2012 08:28:00 GMT</pubDate><guid>http://www.blogjava.net/afei2012/archive/2012/06/15/380544.html#380870</guid><description><![CDATA[import java.util.Iterator;<br>import java.util.Map;<br>import java.util.TreeMap;<br><br><br>/**<br> * 递归算法实现,改为非递归也非常easy<br> * @author 李佳<br> *<br> */<br>public class E <br>{<br>	// 存储人员编号 1....N和报号 (1,2,3)的对应关系<br>	private static TreeMap&lt;Integer,Integer&gt; tm = new TreeMap&lt;Integer,Integer&gt;();<br>	// 初始化 ,假设有100人<br>	public static void inint()<br>	{<br>		for(int i=1;i&lt;=300;i++)<br>		{<br>			// 直接模3后会是1,2,0,将0改为3.<br>			tm.put(i, i%3==0?3:i%3);<br>		}<br>	}<br><br>	/**<br>	 * 算法如下:<br>	 * <br>	 * 1 移除报号为3的人<br>	 * 2 如果只剩两人,则结束<br>	 * 3 根据tm中最后一个人的报号M,重新计算每个人的报号<br>	 * 	即第一个人为(M+1)%3,第二个人为(M+2)%3<br>	 * 4 重复第一步.<br>	 * <br>	 * 当然最后剩下的两人的报号肯定为1和2,若继续下去的话,就是报号为2的那个人最终剩下.这一步我没有写<br>	 */<br>	public static void compute()<br>	{<br>		// 1 移除报号为3的人<br>		Iterator&lt;Map.Entry&lt;Integer , Integer&gt;&gt; it = tm.entrySet().iterator();<br>		while(it.hasNext())<br>		{<br>			if(it.next().getValue().equals(3))<br>			{<br>				it.remove();<br>			}<br>		}<br>		// 2 如果只剩两人,则结束<br>		if(tm.size()&lt;=2)<br>		{<br>			return;<br>		}<br>		// 3 根据tm中最后一个人的报号M,重新计算每个人的报号<br>		// 	即第一个人为(M+1)%3,第二个人为(M+2)%3<br>		resort();<br>		// 4 重复第一步.<br>		compute();<br>	}<br>	public static void resort()<br>	{<br>		// resort<br>		int last = tm.lastEntry().getValue();<br>		Iterator&lt;Map.Entry&lt;Integer , Integer&gt;&gt; it = tm.entrySet().iterator();<br>		<br>		while(it.hasNext())<br>		{<br>			last++;<br>			it.next().setValue(last%3==0?3:last%3);<br>		}<br>	}<br>	public static void display()<br>	{<br>		System.out.println(tm);<br>	}<br>    public static void main(String[] adfafd)<br>    {    <br>    	inint();<br>    	compute();<br>    	display();<br>    }<br><br>}<br><img src ="http://www.blogjava.net/afei2012/aggbug/380870.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/afei2012/" target="_blank">walnutprince</a> 2012-06-15 16:28 <a href="http://www.blogjava.net/afei2012/archive/2012/06/15/380544.html#380870#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>