- 浏览: 124236 次
- 性别:
- 来自: 抽象空间
最新评论
-
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 3844/** * java version "1. ... -
将一个自然数拆分为若干不重复自然数之和(OO实现)
2011-03-13 22:04 2147原题出处:http://www.iteye ... -
自然数m的立方可写成m个连续奇数之和
2010-10-22 09:49 4486题目: 任何一个自然数m的立方均可写成m个连续奇数之和。 例如 ... -
使用内部类实现多重继承
2010-09-07 19:10 1150最常见的实现多重继承的方式,是implements inter ... -
怎么捕获webwork下载文件时的异常
2010-08-09 17:02 1050使用webwork的文件下载方式,action配置如下: ... -
java.rmi.UnmarshalException: invalid method hash
2010-07-30 16:25 4119今天在应用程序中报了下面异常: java.rmi.Serv ... -
转:java 获取ftp文件大小
2010-07-30 11:46 9903【注】:本代码摘自 http://www.java2s.com ... -
判断字符串是否是数字
2010-03-13 14:47 1076看到一笔试题,如题; 《c程序设计语言》第二版5.2节里有ge ... -
练习:生产者-消费者
2010-03-03 14:50 991关于Object.wait()和Object.notify() ... -
三线程顺序打印N次ABC
2010-02-27 15:17 3094记得前一阵子JE上讨论线程顺序打印的面试题,现在有空也练练。 ... -
求数组的平衡点
2010-02-27 14:47 2089原文见:http://www.iteye.com/topic/ ... -
怎么记忆Thread.join()
2010-02-23 16:57 2625Thread.join() JDK_API:等待该线程终止。 ... -
初涉java多线程(二)
2009-12-04 23:10 983原文:http://huagenli.iteye.com/bl ... -
Collection’modifiers seem not correct when reflect
2009-12-03 22:48 1033做练习的时候就抄了如下方法 public static v ... -
对private static 实例变量同步,线程获得的是什么锁?
2009-11-29 11:01 1204初学线程,还是比较愚的。 问题如题,就是在方法中加了synch ... -
初涉java多线程(一)
2009-11-23 22:14 936十一期间看了一点java多 ... -
new StringBuilder() VS new StringBuilder(arg)
2009-09-30 17:35 1342StringBuilder,非线程安全 ... -
一种截取字母汉字混合串的方法(String.getBytes)
2009-08-09 21:37 2142/** * 按字节截取字符串 * @para ... -
一种截取字母汉字混合串的方法(String.split)
2009-08-08 23:28 1670/** * 按字节截取字符串 * @ ...
相关推荐
MATLAB是MathWorks公司推出的用于数值计算、可视化以及编程的高级语言和交互式环境,广泛应用于工程、科学以及数学等领域。在此文中,作者展示了MATLAB的三维图形处理能力,通过编写代码模拟海螺的生长过程。 三维...
海螺模板的设计注重响应式布局,这意味着无论用户使用何种设备——桌面电脑、平板还是手机,都能提供一致且良好的浏览体验。模板的布局会根据屏幕大小自动调整,确保内容在不同设备上都能清晰呈现。此外,该模板还...
海螺模板是一款专门为苹果CMS...无论是魔改版的V16还是标准的v4.0,都强调了用户体验和管理灵活性,而"海螺主题设置"确保了定制化的可能性。通过深入理解和充分利用这些资源,用户可以创建出独具特色的在线视频平台。
2. **响应式设计**:考虑到用户可能使用不同设备访问网站,海螺模板一般会具备响应式特性,确保在手机、平板电脑和桌面电脑上都能提供良好的浏览体验。 3. **功能集成**:作为苹果CMS V10的模板,海螺模板可能会...
7. **自定义性强**:主题提供了丰富的自定义选项,允许管理员根据需求调整布局、颜色、字体等,打造个性化的影视网站。 8. **兼容性**:与苹果CMS V10系统无缝集成,确保所有功能正常运作,并可能支持未来的系统...
1. **响应式设计**:海螺模板M3.1采用响应式布局,能适应不同设备的屏幕尺寸,提供良好的移动端浏览体验。 2. **界面美化**:模板设计风格独特,色彩搭配合理,图标和按钮设计美观,提升了用户的视觉感受。 3. **...
6. **模板系统**:支持自定义模板,海螺模板作为其中的一员,具有独特的设计风格和布局,能为网站增添个性化的视觉效果。 海螺模板的特点: 1. **视觉设计**:海螺模板以其清新、简洁的界面设计,为用户提供舒适的...
例如,利用勾股数组13、15、17的特性,学生可以亲自动手画出这些线段,从而深刻地理解勾股定理的几何意义,并锻炼他们的实际操作技能。 在勾股定理的实际应用环节,课件通过精心设计的问题情境,帮助学生将理论知识...
接下来,在浏览器中访问安装地址,按照提示输入数据库信息,完成初始设置。最后,登录后台进行基本配置,如网站名称、管理员账号等。 数据采集教程主要涉及如何获取和导入影视资源。苹果CMS通常支持自动采集功能,...
【海螺创业2019年报】是中国海螺创业控股有限公司发布的年度财务报告,涵盖了公司在2019年的运营情况、财务数据、业绩回顾、管理分析、企业治理等多个方面的重要信息。以下是报告中的主要知识点: 1. **公司信息**...
"007maccms_v1.0"可能是海螺主题的特定版本,代表着该主题的初始发布或者更新。这个文件名暗示着主题可能包含了针对苹果CMS的特别优化,比如与"007"电影系列相关的主题元素或功能。 在安装使用苹果CMS V10海螺主题...
5. **响应式设计**:为了适应不同设备和屏幕尺寸,"神器海螺"可能应用了响应式布局,这可能涉及到媒体查询、Flexbox或Grid布局技术。 6. **性能优化**:JavaScript开发中,性能优化是一个重要环节。项目可能使用了...
海螺模板一直是苹果cms比较好看的模板。苹果CMS就是影视解析的PHP源码,站长朋友可以拿去搭建一个影视站引流,效果不错哦!目前网络上有很多,这个是无错最新版本!已去授权 主题设置后台 – 安装PHP扩展 切记一定...
主题设置后台– 安装PHP扩展– 后台快捷菜单配置添加– 海螺主题设置/admin.php/admin/conch/theme海螺模板完美修复版2020.01.04带模板独立后台管理系统的多功能模板。使用此模板务必安装sg11插件,php版本7.0~7.2。...
10. **database.sql**:数据库结构和初始数据的SQL脚本,用于初始化数据库。 11. **.htaccess**:Apache服务器的重写规则文件,用于URL美化和隐藏PHP扩展名。 12. **README**或**INSTALL**文件:提供安装和配置指南...
【沙滩海螺PPT模板】是一款专为旅游休闲主题设计的演示文稿模板,它将带你进入一个充满海洋风情的世界,让观众仿佛置身于阳光、沙滩与海螺之间,为你的演讲增添独特的视觉效果和感染力。这款模板适用于制作关于海滩...
顶部导航自定义分类内容页显示二级菜单修复 后台加入更新版本显示 海螺模板修复版2020.02.27 带模板独立后台管理系统的多功能模板。 使用此模板务必安装sg11插件,php版本7.0~7.2。 2020年2月27日 优化SEO设置...
"苹果CMS海螺V16魔改版"可能是指对原版海螺模板V16进行了一系列个性化或增强性的修改,以适应特定用户需求或提高网站性能。 海螺模板以其海洋元素的设计风格,提供了一种清新、直观的用户体验。它可能包括自定义的...
多功能苹果CMSv10自适应全屏高端模板开源授权版 这是一款带“主题管理系统”的模板。这是一款好模板。 后台自定义菜单 请把下面admin.php改成你得后台地址 ...按照步骤都操作完了 先开前端首页 在进后台!
海螺模版V20修复版,广告代码添加与优化修复多线路时播放页列表点其他线路还是播放默认线路的问题修复前台黑白切换和字体颜色切换失效修复微信二维码没有对接苹果控制后台问题优化换一换功能的图片加载速度修复PC...