源于作者:jenlp110 的 一道面试题

作者文章来源:[url]http://www.iteye.com/topic/545378[/url]

一个画图程序 要求打印出 :
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



解决方法一:
class snakePrint {   
static int length = 7;
static int value = 1;
static int[][] snake = new int[length][length];
static Direction lastDirection = Direction.Right;

static enum Direction {
Right, Down, Left, Up;
}

public static void initialArray() {
int row = 0, line = 0;
for (int c = 0; c < length * length; c++) {
snake[row][line] = value;
lastDirection = findDirection(row, line);
switch (lastDirection) {
case Right:
line++;
break;
case Down:
row++;
break;
case Left:
line--;
break;
case Up:
row--;
break;
default:
System.out.println("error");
}
value++;
}
}

static Direction findDirection(int row, int line) {
Direction direction = lastDirection;
switch (direction) {
case Right: {
if ((line == length - 1) || (snake[row][line + 1] != 0))
direction = direction.Down;
break;
}
case Down: {
if ((row == length - 1) || (snake[row + 1][line] != 0))
direction = direction.Left;
break;
}
case Left: {
if ((line == 0) || (snake[row][line - 1] != 0))
direction = direction.Up;
break;
}
case Up: {
if (snake[row - 1][line] != 0)
direction = direction.Right;
break;
}
}
return direction;
}

public static void main(String[] args) {
initialArray();

// display.....
for (int i = 0; i < length; i++) {
for (int j = 0; j < length; j++) {
System.out.print(snake[i][j] + " ");
}
System.out.println();
}
}
}

解决方法二:
public static void main(String args[]){   
int N=5;
int a[][]=new int[N][N];
int i=0,j=0;
int count=1;
for(i=0;i<N;i++){
for(j=0;j<N;j++){
a[i][j]=0;
}
}
i=0;
j=0;
for(int k=0;k<=N/2;k++){
i=k;
j=k;
for(i=k;i<N-k;i++){
a[j][i]=count;
count++;
}
i=N-k-1;
for(j=k+1;j<N-k;j++){
a[j][i]=count;
count++;
}
j=N-k-1;
for(i=N-k-2;i>=k;i--){
a[j][i]=count;
count++;
}
i=k;
for(j=N-k-2;j>=1+k;j--){
a[j][i]=count;
count++;
}
}

for(i=0;i<N;i++){
for(j=0;j<N;j++){
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}


方法三:
<PRE class=java name="code">/*  
*
int baseNum=i
1 2 3 ... i
4i-4 (4i-4)+1 ... (4i-4)+(i-2) i+1
... ... ... ... i+2
... (4i-4)+[3(i-2)-2] ... (4i-4)+(i-2)+(i-2-1) ...
3i-2 3i-3 ... 2i i+(i-1)

*/



/**
*
* @author
*/
public class PrintSnakeNumberSquare {
public static void printN(int baseNum){
System.out.println("int baseNum="+baseNum);
for(int i=0;i<baseNum;i++){
printN_M(baseNum,i,0);
System.out.println();
}
}
/**
* 打印baseNum宽度的第row行
* @param baseNum:打印正方形的边长
* @param row:打印正方形的第 row 行
* @param outNumber :这个正方形外面层数所占用的数字个数,最外面一层此值为0;
* 长度为n的正方形占用4*n-4个数字,第i层递归需传入前i-1层所占数字总和。
*/
public static void printN_M(int baseNum,int row,int outNumber){
if(row==0){//如果是第一行
for(int i=1;i<=baseNum;i++){
System.out.format("%3s",i+outNumber);
}
return ;
}
if(row==(baseNum-1)){//如果是最后一行
for(int i=(3*baseNum-2);i>=2*baseNum-1;i--){
System.out.format("%3s", i+outNumber);
}
return;
}
//row 如果不是第一行或者最后一行,则可以分为三部分
// 边长为baseNum正方形第row行的第一个数 ,边长为baseNum-2的第row-1行 ,边长为baseNum正方形的第row行的最后一个数
//print first number of the row
System.out.format("%3s",4*baseNum-3-row+outNumber);
//print middle part of the row by recursive print
int nextBaseNum=baseNum-2;
int nextRow=row-1;
if(nextBaseNum>0&&nextRow>=0){
printN_M(nextBaseNum,nextRow,outNumber+4*baseNum-4);
}
//print last number of the row
System.out.format("%3s",baseNum+row+outNumber);
}

public static void main(String[] args){

PrintSnakeNumberSquare.printN(3);
PrintSnakeNumberSquare.printN(4);
PrintSnakeNumberSquare.printN(5);
PrintSnakeNumberSquare.printN(7);

}
}</PRE>

<PRE class=java name="code">int baseNum=3
1 2 3
8 9 4
7 6 5
int baseNum=4
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
int baseNum=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 baseNum=7
1 2 3 4 5 6 7
24 25 26 27 28 29 8
23 40 41 42 43 30 9
22 39 48 49 44 31 10
21 38 47 46 45 32 11
20 37 36 35 34 33 12
19 18 17 16 15 14 13
</PRE>
llama.cpp与Ollama原理实战:GGUF量化、CUDA加速与OpenAI兼容部署 大模型本地推理框架的核心在于运行时轻量化与硬件无关的模型封装。llama.cpp作为纯C/C++实现的模型运行时环境,依托GGUF格式统一管理权重、tokenizer和量化元数据,实现零Python依赖的跨平台部署;其量化机制(如Q4_K_M)并非简单压缩,而是在可控误差内重分布计算负载,显著提升CPU/GPU推理效率。Ollama则构建了类操作系统的模型分发体系,通过语义化索引、模板自动协商与Content-Addressed存储,屏蔽底层复杂性,并提供OpenAI兼容API,使开发者可快速集成至现有工程 阅读详情

相关推荐

iStore增强插件 如何重塑家庭网络与存储体验

本文深入解析了iStore增强插件如何重塑家庭数字生活体验。它通过集成智能流控、一键式文件共享、媒体服务器及智能家居网关等功能,将复杂的网络配置、存储管理与设备协同简化为图形化操作,有效解决了家庭网络卡顿、数据割裂与使用门槛高等核心痛点,让普通用户也能轻松打造高效、稳定、安全的家庭数字中枢。

prometheus9mon的博客 648

javascript编程基础 案例,js编程题库和答案

2、请将数组“['苹果', '香蕉', '酥梨', '榴莲', '樱桃', '柿子', '葡萄', '哈密瓜', '西瓜']”中的元素依次打印到控制台。4、使用Math.floor(Math.random() * (max+1)+1)表示生成1到任意数之间的随机整数。1、移出数组arr“[1,2,3,4,2,5,6,2,7,2]”中与2相等的元素,并生成一个新数组,不改变原数组。1、根据用户输入的数值(数字1~7),返回对应的星期几。3、函数“((a, b)=> a * b)(6, 2);

神经网络爱好者 1304

TB6600驱动器共阴共阳接法傻傻分不清?一张图搞定STM32与42步进电机的接线避坑指南

本文详细解析了TB6600驱动器共阴共阳接法的本质区别,提供了STM32与42步进电机的高效连接方案。通过实际案例和接线图示,帮助读者避免常见错误,确保驱动器与MCU的安全连接,提升项目稳定性。

weixin_28710999的博客 245

JavaScript 课后习题答案

第一章 第一题: var msg = prompt("请您输入信息"); alert('用户输入的信息是:'+msg); 第二章 第一题: var num1 = prompt("请您输入第一位数字"); var num2 = prompt("请您输入第二位数字"); var max; if(num1 &...

余笙.'的博客 1万+

systemView的安装使用

systemView的安装使用

qq_33712422的博客 3974

Python连接高斯数据库踩坑实录:从SASL报错到SSL安全连接的完整指南

本文详细记录了Python连接高斯数据库时遇到的SASL authentication报错及其解决方法。通过剖析SASL认证机制,对比了修改数据库配置、使用官方驱动等方案的利弊,并重点提供了通过自动化脚本生成SSL证书,实现安全、免密连接的完整指南,帮助开发者彻底解决连接难题。

weixin_28340315的博客 438

2021-10-20(函数)

函数 就是封装一段可以被重复调用执行的代码块,通过此代码块可以实现大量代码的重复使用。 函数的使用:声明函数和调用函数 <script> //函数的使用分为两步 声明函数和调用函数 //1 ********************************************声明函数 // function 函数名() { // 函数体 // } function sa

weixin_46459597的博客 536

虎符+红明谷+ctfshow渔人杯赛后复现

目录标题虎符CTFWeb-签到MISC-你会日志分析吗红明谷CTFWeb-write_shellMISC-我的心是冰冰的ctfshow渔人杯签到抽奖感受下气氛神仙姐姐阿拉丁迷飘啊飘简单二维码我跟你拼了 虎符CTF Web-签到 参考详细分析PHP源代码后门事件及其供应链安全启示 根据文章提示,添加恶意请求头 User-Agentt: zerodiumphpinfo(); 可以看到phpinfo内容 继续构造,查看根目录下的文件 User-Agentt: zerodiumsystem('ls /');

Atkx's Blog 1984

面试题详解-小白专用

面试题详解-小白专用1.下面代码的输出是什么?2.总结 1.下面代码的输出是什么? let a = 3; let b = new Number(3) let c = 3; console.log(a == b); console.log(a === b); console.log(b === c); 首先我们看到new Number() ,就会想到它会创造一个对象 == 只用比较值 而 ===比较值与类型 很明显

weixin_45817492的博客 613

dpdk 源码分析 rte_ring

rte_ring源码分析

qq_40843445的博客 929

【四足机器人项目实战】四足机器人弹簧倒立摆(SLIP)动力学模型

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言1.动力学建模构型方法2.四足机器人动力学模型(1)多体动力学模型【针对躯干+脚建模】方法一:VMC(VirtualModelController)模型方法二:SLIP模型(2)浮基单体动力学模型【针对躯干建模】【用于MPC】 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对四足机器人动力学模型-VMC、SLIP和浮动机体模型做个简

qq_35635374的博客 7312

jenlp110 的 一道面试题

转自:http://www.iteye.com/topic/545378 源于作者:jenlp110 的 一道面试题 文章分类:Java编程 一个画图程序 要求打印出 : 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 ...

iteye_289的博客 122

JavaScript高级程序设计

作者:禅与计算机程序设计艺术 1.简介 JavaScript(简称JS)是一种直截了当、简单易用的动态脚本语言。它最初由Netscape公司的Brendan Eich(布兰登·艾奇)于1995年创建,但后来逐渐成为事实上的通用编程语言。目前,JS已经成为世界上最流行的客户端脚本语言,广泛用于网页开发、移

AI天才研究院 2267

javaScript日期时间对象、格式化当前日期、计算时间差 、BOM

日期时间对象、格式化当前日期、计算时间差 、BOM

qq_56756602的博客 526

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java script console_9个让JavaScript调试更简单的Console命令

一、显示信息的命令常用console命令console.log('hello');console.info('信息');console.error('错误');console.warn('警告');最常用的就是console.log了。二、占位符console上述的集中度支持printf的占位符格式,支持的占位符有:字符(%s)、整数(%d或%i)、浮点数(%f)和对象(%o)console.lo...

weixin_36362920的博客 240

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JavaScript 进阶问题列表 (javascript面试题)

JavaScript 进阶问题列表 原文地址: https://github.com/lydiahallie/javascript-questions/blob/master/zh-CN/README-zh_CN.md (github有时比较慢,留个备份) 1. 输出是什么? function sayHi() { console.log(name) console.log(age) var name = 'Lydia' let age = 21 } sayHi() A: Lyd

Jack @ 优快云 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

JavaScript调试技巧之console.log()详解

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34274029的博客 404

JavaScript基础题

最基础的 for 循环 数组的方法可以活学活用么? 诡异的作用域、闭包、上下文执行环境 运算符、表达式等小知识 还有字符串方法、数据类型转换方法、时间日期对象方法、数学方法…… 各种逻辑判断、函数封装、基础算法…… JavaScript 第一阶段基础知识总结测试题 姓名:__________ 一、选择题(每题2分,多选题错选、少选不得分) 1、分析下段

qq_37927991的博客 6323

05 关于console对象,你要知道的几件事情

写在前面 做前端开发已经有一两年了吧,对于console对象你应该不陌生吧,那我猜你经常用的是console.log()方法,对于console其它的方法你还了解多少呢?这篇文章我们一起来看看console这个对象的另外一些方法,增加你的一些小技能。 console介绍 console对象其实并不是我们JS内置的对象,而是宿主对象,也就是浏览器对象提供给我们的内置对象,我们可以拿这个对...

X北辰北的博客 929

RabbitMQ 面试题

你发一条消息,在网络上并不是一个整体飞过去的。如果消息比较大,RabbitMQ 的底层协议会把它切成多个数据包(帧),按顺序发送,Broker 收到后再拼起来。假设线程 T1 和 T2 同时用同一个 Channel 发消息:T1 发消息 A,被切成三个帧:[A1] [A2] [A3]T2 发消息 B,也被切成三个帧:[B1] [B2] [B3]如果没有任何保护,这两个线程的帧可能交错到达 Broker,变成 [A1] [B1] [A2] [B2] [A3] [B3]。

互联网叫兽 559

smart-tunnel-ai · 隧道/高速智慧化 AI 应用项目

面向的工程师:一个能跑通、能改、能讲清楚的 Spring Boot + Spring AI 项目。:它不是「调了个 ChatClient 输出一句话」,而是把切块策略、增量入库、来源溯源、防幻觉、工具调用、结构化输出、评估集、密钥守卫、CI 护栏这些工程问题都落到了代码里。每一处都能指向具体类讲取舍。详见。

futurn_hero的博客 307

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)

LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等) 题目描述: 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: - s = s1 + s2 + ... + sn - t = t1 + t2 + ... + tm - |n - m| <= 1 - 交错 是 s1 + t

huayimenghan的博客 210

Spring 原理高频面试题全解:Bean 生命周期、三级缓存与 @Transactional 失效(2026 招聘 JD 真题复盘)

按 2026 招聘 JD 与一线面经整理 10 道 Spring 高频题:Bean 生命周期与扩展点顺序、AOP 代理生成时机、三级缓存为何必须三级、构造器注入循环依赖为何无解、@Transactional 六类失效与自调用修复三法、REQUIRES_NEW 连接池耗尽风险、事件总线同步语义与 @TransactionalEventListener、自动配置从 spring.factories 到 imports 的演进、自定义 Starter 三步走,附速查表与三条追问链。

蒙眼过河 319

Docker镜像优化:面试高频翻车的简单题

本文深入探讨Docker镜像优化的两大核心层面:体积优化与构建速度优化。指出仅关注镜像瘦身(如使用Alpine)是表面理解,真正关键在于平衡空间与时间——在DevOps流水线中,构建速度常优先于体积。文章详解了多阶段构建、缓存利用、.dockerignore文件等高效策略,并揭示Alpine镜像虽小但存在兼容性、依赖缺失等风险,强调需结合业务场景权衡选择。掌握这些细节,方能在面试中展现真实技术深度,脱颖而出。

java后端架构 215

AI 全栈开发工程师【二面】

传统的大模型应用通常采用:用户输入 → Prompt → LLM → 输出结果这种模式适合简单问答、文本生成和信息提取等任务。但对于复杂业务,仅依靠一次模型调用往往不够。例如,用户提出:帮我查询某个地区近三个月销量最高的产品,并分析销量变化原因。理解用户需求。拆解查询条件。调用数据库或外部工具。获取查询结果。分析数据。生成最终报告。Agent 的核心价值在于让大模型不仅能够生成文本,还能够根据任务目标进行规划、调用工具、观察执行结果,并根据结果调整后续行动。

qq_22841387的博客 454
上一篇: web前段优化书籍资料推荐
下一篇: div scroll 滚动条
effective_java
博客等级 码龄17年 2粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值