- 浏览: 121828 次
- 性别:
- 来自: 抽象空间
最新评论
-
Dancen:
理想状态下jar包的更新当然不应该去修改其中的方法签名等外部依 ...
javamake.jar & javamake-ant15.jar -
mwei:
Dancen 写道javamake可以解决代码之间的依赖问题, ...
javamake.jar & javamake-ant15.jar -
Dancen:
javamake可以解决代码之间的依赖问题,但如果调用的是外部 ...
javamake.jar & javamake-ant15.jar -
kidding87:
看到了楼主的connet by用法,又看到这个很久以前的东西, ...
海螺式初始化二维数组 -
pxlfxl2:
mwei 写道pxlfxl2 写道如果我的需求是要打印A到Z ...
三线程顺序打印N次ABC
原题见:http://www.iteye.com/topic/545378
真的不知道叫什么名字好,就自己给起个“海螺式”初始化二维数据。
说的是深圳一家公司的面试题,要求打印如下结果:
看完题目,就没敢继续看下面的讨论,怕是别人给出答案,就自己想了想,写了起来。写完了,发现有的人的回答跟我的思路一致。不过用了不短的时间,若是真的笔试时,自己很难在规定的时间内完成(跑起来)。
思路就是根据数字的递增来初始化,使用四个标记right->down->left->up->right...循环下去。
测试结果:
snake.init(2);时也输出了预期的结果。
真的不知道叫什么名字好,就自己给起个“海螺式”初始化二维数据。
说的是深圳一家公司的面试题,要求打印如下结果:
int i=5; 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 int i=6 1 2 3 4 5 6 20 21 22 23 24 7 19 32 33 34 25 8 18 31 36 35 26 9 17 30 29 28 27 10 16 15 14 13 12 11
看完题目,就没敢继续看下面的讨论,怕是别人给出答案,就自己想了想,写了起来。写完了,发现有的人的回答跟我的思路一致。不过用了不短的时间,若是真的笔试时,自己很难在规定的时间内完成(跑起来)。
思路就是根据数字的递增来初始化,使用四个标记right->down->left->up->right...循环下去。
/** * http://www.iteye.com/topic/545378?page=1 */ public class PrintSnakeNumber { private int len; private int[][] snake; /** * @param len > 1 */ public void init(int len){ if(len<2) this.len=2; this.len=len; snake=calculate(this.len); } public int getLen(){ return this.len; } private final int[][] calculate(int len){ int[][] snake=new int[len][len]; int total=len*len; int i,j=0; //array'index int x=-1; //backup array's index int y=0; //backup array's index int value=1; //1...len^2, increased by one final String right="right"; //only i++ final String down="down"; //only j++ final String left="left"; //only i-- final String up="up"; //only j-- final String stop="stop"; Map<String,Integer> map=new HashMap<String,Integer>(); map.put("right", 0); map.put("down", 1); map.put("left", 2); map.put("up", 3); String pos=right; //first turn right while(!pos.equals(stop)){ switch(map.get(pos)){ case 0: //right i=x+1; j=y; for(;i<len;i++){ if(snake[i][j]==0){ x=i; y=j; snake[i][j]=value++; }else{ if(value>total) pos=stop; else pos=down; break; } } //end for case 1: //down i=x; j=y+1; for(;j<len;j++){ if(snake[i][j]==0){ x=i; y=j; snake[i][j]=value++; }else{ if(value>total) pos=stop; else pos=left; break; } } //end for case 2: //left i=x-1; j=y; for(;i>=0;i--){ if(snake[i][j]==0){ x=i; y=j; snake[i][j]=value++; }else{ if(value>total) pos=stop; else pos=up; break; } }//end for case 3: //up i=x; j=y-1; for(;j>=0;j--){ if(snake[i][j]==0){ x=i; y=j; snake[i][j]=value++; }else{ if(value>total) pos=stop; else pos=right; break; } }//end for } //end switch } //end while return snake; } public void printArray(){ for(int i=0;i<this.len;i++){ for(int j=0;j<this.len;j++) System.out.print(this.snake[j][i]+"\t"); System.out.println(); } } }
测试结果:
public static void main(String[] args) { PrintSnakeNumber snake=new PrintSnakeNumber(); snake.init(10); snake.printArray(); } 1 2 3 4 5 6 7 8 9 10 36 37 38 39 40 41 42 43 44 11 35 64 65 66 67 68 69 70 45 12 34 63 84 85 86 87 88 71 46 13 33 62 83 96 97 98 89 72 47 14 32 61 82 95 100 99 90 73 48 15 31 60 81 94 93 92 91 74 49 16 30 59 80 79 78 77 76 75 50 17 29 58 57 56 55 54 53 52 51 18 28 27 26 25 24 23 22 21 20 19
snake.init(2);时也输出了预期的结果。
评论
2 楼
kidding87
2011-10-24
看到了楼主的connet by用法,又看到这个很久以前的东西,感觉很有意思留个解法
int [][] x=new int[n][n]; int layer=0; if(n%2==0){ layer=n/2; }else{ layer=n/2+1; x[layer-1][layer-1]=n*n; } int t=1; for(int i=0;i<layer;i++){ int px=i,py=i; for(;px<n-i-1;px++) x[px][py]=t++; for(;py<n-i-1;py++) x[px][py]=t++; for(;px>i;px--) x[px][py]=t++; for(;py>i;py--) x[px][py]=t++; } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ System.out.print(x[j][i]+"\t"); } System.out.println(); }
1 楼
shuishou119800
2009-12-16
你好,我对你的calculate方法进行了一些改造,代码如下:
我在blog(http://shuishou119800.iteye.com/blog/549592)中对这个算法写了些分析,希望能一起探讨
private int[][] calculate(int len){ int[][] helix=new int[len][len]; int min=0,max=len-1;//行列的最大最小值 int row=0,col=0; for(int i=0;i<len*len;i++){ helix[row][col]=i+1; if(row==min&&col<max){ col++; }else if(row<max&&col==max){ row++; }else if(row==max&&col>min){ col--; }else if(row>min&&col==min){ row--; } if(row-1==min&&col==min){ //在一个周期结束时修改最大最小值 min++; max--; } } return helix; }
我在blog(http://shuishou119800.iteye.com/blog/549592)中对这个算法写了些分析,希望能一起探讨
发表评论
-
泛型<T>的转换问题
2011-04-28 15:03 2在问答里提问,没有得到答案,特开此贴讨论。 代码如下: ... -
fibonacci的几种实现及尾递归
2011-03-27 22:55 3779/** * java version "1. ... -
将一个自然数拆分为若干不重复自然数之和(OO实现)
2011-03-13 22:04 2069原题出处:http://www.iteye ... -
自然数m的立方可写成m个连续奇数之和
2010-10-22 09:49 4416题目: 任何一个自然数m的立方均可写成m个连续奇数之和。 例如 ... -
使用内部类实现多重继承
2010-09-07 19:10 1106最常见的实现多重继承的方式,是implements inter ... -
怎么捕获webwork下载文件时的异常
2010-08-09 17:02 1009使用webwork的文件下载方式,action配置如下: ... -
java.rmi.UnmarshalException: invalid method hash
2010-07-30 16:25 4072今天在应用程序中报了下面异常: java.rmi.Serv ... -
转:java 获取ftp文件大小
2010-07-30 11:46 9781【注】:本代码摘自 http://www.java2s.com ... -
判断字符串是否是数字
2010-03-13 14:47 1042看到一笔试题,如题; 《c程序设计语言》第二版5.2节里有ge ... -
练习:生产者-消费者
2010-03-03 14:50 947关于Object.wait()和Object.notify() ... -
三线程顺序打印N次ABC
2010-02-27 15:17 3023记得前一阵子JE上讨论线程顺序打印的面试题,现在有空也练练。 ... -
求数组的平衡点
2010-02-27 14:47 2040原文见:http://www.iteye.com/topic/ ... -
怎么记忆Thread.join()
2010-02-23 16:57 2544Thread.join() JDK_API:等待该线程终止。 ... -
初涉java多线程(二)
2009-12-04 23:10 945原文:http://huagenli.iteye.com/bl ... -
Collection’modifiers seem not correct when reflect
2009-12-03 22:48 991做练习的时候就抄了如下方法 public static v ... -
对private static 实例变量同步,线程获得的是什么锁?
2009-11-29 11:01 1141初学线程,还是比较愚的。 问题如题,就是在方法中加了synch ... -
初涉java多线程(一)
2009-11-23 22:14 904十一期间看了一点java多 ... -
new StringBuilder() VS new StringBuilder(arg)
2009-09-30 17:35 1297StringBuilder,非线程安全 ... -
一种截取字母汉字混合串的方法(String.getBytes)
2009-08-09 21:37 2096/** * 按字节截取字符串 * @para ... -
一种截取字母汉字混合串的方法(String.split)
2009-08-08 23:28 1626/** * 按字节截取字符串 * @ ...
相关推荐
苹果CMS V10响应式影视网站模板海螺v6.0.1主题模板 免授权版 教程:https://www.kancloud.cn/yuanmachi/hailuo/1893402
用MATLAB实现三维模拟海螺模型.pdf
海螺影视苹果cms10 3.1.6模板,带后台海螺主题设置
苹果CMS V10响应式影视网站模板海螺v6.0.1主题模板
海螺创业:二零一九年年报.PDF
主题设置后台– 安装PHP扩展– 后台快捷菜单配置添加– 海螺主题设置/admin.php/admin/conch/theme海螺模板完美修复版2020.01.04带模板独立后台管理系统的多功能模板。使用此模板务必安装sg11插件,php版本7.0~7.2。...
数学海螺图勾股定理应用PPT课件.pptx
顶部导航自定义分类内容页显示二级菜单修复 后台加入更新版本显示 海螺模板修复版2020.02.27 带模板独立后台管理系统的多功能模板。 使用此模板务必安装sg11插件,php版本7.0~7.2。 2020年2月27日 优化SEO设置...
苹果cms10+海螺模板m3.1全解密无后门版
神器海螺 - 网址快速直达
修复版海螺模板V16 修复加密后门、修复幻灯片 增加魔改设置
最近超火的苹果cmsV10影视站的海螺模板,现在我没做站,对我没用,买来一个多月,放手里没用,积分不够用了换点积分,可以直接解压到模板目录,可直接使用,用过的人都懂
1、简洁,只有一个页面[index.asp]。2、完善,实现了留言,回复,删除功能。3、div css技术。4、代码简洁,适合学习用。5、用户名:admin 密码:admin8886、要改用户名,密码请在index.asp中的第四和第五行改动,...
沙滩海螺ppt模板适用于旅游休闲主题设计应用,
苹果maccms v10自适应海螺模板,这是在淘宝买的去版权验证版,可以放心使用,源码底部原来有海螺的链接,已经去除,其他没什么问题
海螺模块免授权,苹果cms海螺模板,最新修复版,免授权,上传就可以使用。
苹果cms10 海螺模板 资源提供
海螺
修复说明: 修复多线路时播放页列表点其他线路还是播放默认线路的问题 修复前台黑白切换和字体颜色切换失效 修复微信二维码没有对接苹果控制后台问题 ...海螺主题首页广告代码: 这个代码建议放在【全站通栏
沙滩的海螺PPT模板.pptx,在一个沙滩上,有一个黄色的海螺。适用于旅游宣传、海洋、产品推广等主题。