一道简单的for循环面试题(数字龙形排序)
本道题是我从网上见到的,因为是一道很久没做的循环题,自己的思路也是陷入了一些思维陷阱中,后来经过把大脑放空,重新看这道题后,思路立马就出来了。
题目就是完成如下图所示的效果:
我一开始是想着将它按照奇偶行来区分每一行都是一个数组,来将这些数组进行输出,后来发现总是无法跳出循环,就改用了第二种思路:将(行列)个数放入一个数组中,当奇数行时采用正序排列,偶数行采用倒序排列就ok啦。*
有了整体的思路后就需要考虑倒序排列的问题了,其实就是将数组的位置能用行和列表示出来。
for (int i = 0; i < hang; ++i) {
if (i % 2 != 0) {
for (int j = 0; j < lie; j++) {
// 赋值
arr[i * lie + lie - j - 1] = start;
start++;
}
} else {
for (int j = 0; j < lie; j++) {
arr[i * lie + j] = start;
start++;
}
}
}
接下来就可以完善全部代码了,全部代码如下,有需要的可以自行研究
// 利用数组打印出蛇形结构
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入开始数据:");
int start = sc.nextInt();
System.out.print("请输入行数:");
int hang = sc.nextInt();
System.out.print("请输入列数:");
int lie = sc.nextInt();
// 可以知道总的数数量是 hang*lie,所以可以从start开始 一个一个的添加进数组里
int[] arr = new int[hang * lie];
int count = 0;
for (int i = 0; i < hang; ++i) {
if (i % 2 != 0) {
for (int j = 0; j < lie; j++) {
// 赋值
arr[i * lie + lie - j - 1] = start;
start++;
}
} else {
for (int j = 0; j < lie; j++) {
arr[i * lie + j] = start;
start++;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
count++;
if (count % lie == 0) {
System.out.println();
}
}
}
我是一个正在偷偷努力学习java的大胖子,有任何问题大家都可以发在我的个人公众号上边,我也会尽量帮大家解决,当然,我也只是一个正在学习java的人,并不能保证“每个(其实是大部分问题都不能)”问题都能回答上来。
还有我的个人公众号会不定时更新我的java学习之路,大家如果也在学习java可以在公众号上边与我交流哦。

一道简单的for循环面试题(数字龙形排序)的更多相关文章
- 关于一道简单的Java 基础面试题的剖析: short s1=1;s1 = s1 +1会报错吗?
package common; public class ShortTypeTest { /* * @param args */ public static void main(String[] ar ...
- 一道简单到爆 Java面试题,居然挂了一票人
很多时候bug往往都是出在,我们觉得非常简单,不起眼的基础知识上 年前公司最后一波招人,为年后项目做技术储备,主要招聘对象初中级Java开发,要求也并没有多苛刻,唯一一点基础稍好,快速上手做项目就行. ...
- 一道简单的面试题,难倒各大 Java 高手!
Java技术栈 www.javastack.cn 优秀的Java技术公众号 最近栈长在我们的<Java技术栈知识星球>上分享的一道 Java 实战面试题,很有意思,现在拿出来和大家分享下, ...
- CSU 1785: 又一道简单题
1785: 又一道简单题 Submit Page Summary Time Limit: 5 Sec Memory Limit: 128 Mb Submitted: 602 ...
- 又一道简单题&&Ladygod(两道思维水题)
Ladygod Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- JAVA基础——最简单的多重循环程序
Java 循环语句之多重循环 循环体中包含循环语句的结构称为多重循环.三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环.在二重循环中,外层循环每执行一次,内层循环要执行一圈. 如下所示: ...
- QDUOJ 一道简单的数据结构题 栈的使用(括号配对)
一道简单的数据结构题 发布时间: 2017年6月3日 18:46 最后更新: 2017年6月3日 18:51 时间限制: 1000ms 内存限制: 128M 描述 如果插入“+”和“1”到 ...
- 一道非常棘手的 Java 面试题:i++ 是线程安全的吗
转载自 一道非常棘手的 Java 面试题:i++ 是线程安全的吗 i++ 是线程安全的吗? 相信很多中高级的 Java 面试者都遇到过这个问题,很多对这个不是很清楚的肯定是一脸蒙逼.内心肯定还在质疑 ...
- 一道有趣的for循环题
一道有趣的for循环题 今天在复习js基础知识时发现了一个for循环的题,第一眼看到直接懵逼了,没想到for循环竟然还可以这样玩?涨姿势了. 题目是这样的 for(i=0, j=0; i<10, ...
随机推荐
- Winform 点击TreeView控件节点的CheckBox不触发NodeMouseClick事件的做法
private void Tv_areainfo_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (!e.Node. ...
- VC 调用 MinGW 生成的dll good
首先,如果dll 中导出了C++的类,那么就不要折腾了.不同的编译器编译出来的C++代码是不保证通用的.如果dll中只是一些C 函数,那么是可以互相调用的. MinGW 生成dll时即使生成了 .a ...
- QT延时方法整理(QTimer::singleShot,QWaitCondition,QDateTime.secsTo三种新方法)
1: void QTimer::singleShot ( int msec, QObject * receiver, const char * member ) [static] 样例: #inclu ...
- 一条命令,秒秒钟完成MD5、SHA1校验,这就叫效率!
相信很多奋斗在运维战线的小伙伴们经常会遇到版本升级之类的问题.笔者之前所在的公司每次进行版本发布的时候都会附带MD5校验哈希值,每次升级之前一般都要核对MD5哈希值的,刚刚开始的时候对Linux并不是 ...
- 关于 win32 下磁盘的遍历方法
最近要写个在线专杀的东东,虽然是专杀(本来只要清除几个特定的文件和杀几个特定的进程,然后把用户的注册表恢复正常,很多病毒木马最喜欢干的一件事情就是写 映像劫持 然后机器一重启,安全相关的软件全部玩完了 ...
- 快速开发平台 WebBuilder 8 发布
快速开发平台 WebBuilder 8 发布 了解:http://www.putdb.com,官网:http://www.geejing.com 什么是WebBuilder? WebBuilder是 ...
- C++中的new,operator new与placement new
以下是C++中的new,operator new与placement new进行了详细的说明介绍,需要的朋友可以过来参考下 new operator/delete operator就是new和 ...
- http协议内容展示以及如何用telnet发送请求
1.http协议组成: 报文首部:状态行(请求行) 请求首部字段 通用字段 其他信息 空行 报文主体 GET请求头: GET /test.php?a=1 HTTP/1.1 Host: localhos ...
- 记一次腾讯IEG面试失败经历
如果这是一次成功的经历,估计浏览量不会低.无奈本人能力有限,而且一直在实习,准备时间与面试经验有限导致此次失败,不过,失败也是一种宝贵的经验,我希望也相信这里能给大家一些比较珍贵的经验,废话不多说,上 ...
- 深入解析Hyperledger Fabric启动的全过程
在这篇文章中,使用fabric-samples/first-network中的文件进行fabric网络(solo类型的网络)启动全过程的解析.如有错误欢迎批评指正. 至于Fabric网络的搭建这里不再 ...