蛇形填数(扩充版)

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

习题 蛇形填数
一.题目
描述
在n*n方陈里填入1,2,…,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
输入
直接输入方陈的维数,即n的值。(n<=100)
输出
输出结果是蛇形方陈。
样例输入
3
样例输出
7 8 1
6 9 2
5 4 3

二.思路
一步一步的填,就是这个问题的解决核心.

三.代码

#include <stdio.h>
int a[8][8];
int main ()
{
    int n;
    scanf("%d",&n);
    int tt=1;
    int x=0,y=n-1;
    a[x][y]=tt;   //初始
    while(tt<n*n)
    {
        while(x+1<n&& !a[x+1][y]) a[++x][y] = ++tt;    //下走

        while(y-1>=0&& !a[x][y-1])  a[x][--y]= ++tt;  //左走

        while(x-1>=0&&!a[x-1][y]) a[--x][y]=++tt;     //上走

        while(y+1<n&& !a[x][y+1]) a[x][++y] = ++tt;   //右走

    }
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("%3d",a[i][j]);
        }
        printf("\n");
    }

    return 0;
}

四.总结
填数思想可以用于其他特定图形..
比如 1 2 3 4
9 10 5
8 6
7
再比如 1 3 6 10
2 5 9
4 8
7
再比如 1 3 4 10
2 5 9
6 8
7
第一种:

#include <stdio.h>
int a[8][8];
int main ()
{
    int n;
    scanf("%d",&n);
    int tt=1;
    int x=0,y=0;
    a[x][y]=tt;
    while(tt<(n*n+n)/2)
    {
        while(y+1<n&& !a[x][y+1]) a[x][++y] = ++tt;  //右走
        while(x+1<n&&y-1>=0&&!a[x+1][y-1]) a[++x][--y] = ++tt; //下左走(对角线)
        while(x-1>=0&&!a[x-1][y]) a[--x][y]=++tt;//上走
    }
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-i;j++)
        {
            printf("%3d",a[i][j]);
        }
        printf("\n");
    }

    return 0;
}

第二种:

#include <stdio.h>
int a[8][8];
int main ()
{
    int n;
    scanf("%d",&n);
    int tt=1;
    int x=0,y=0;
    a[x][y]=tt;
    int temp = 1;  
        //temp用于定位每一次的下一行的坐标,因为用x的话,会重复走一二行
    while(tt<(n*n+n)/2)
    {
        a[temp][0] = ++tt;
        x = temp;  //接受到下一行的数值
        temp++;    //自增
        y=0;       //重新让y坐标从0开始
        while(x-1>=0&&!a[x-1][y+1])   a[--x][++y] = ++tt;  //斜上方走(对角线)

    }
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-i;j++)
        {
            printf("%3d",a[i][j]);
        }
        printf("\n");
    }

    return 0;
}

第三种 :

#include <stdio.h>
int a[8][8];
int main ()
{
    int n;
    scanf("%d",&n);
    int tt=1;
    int x=0,y=0;
    a[x][y]=tt;

    while(tt< (n*n+n)/2)
    {
        a[++x][0]=++tt;  //由于有了后续操作,所以不用像上面那样单独变化

        while(x-1>=0&&!a[x-1][y+1])   a[--x][++y] = ++tt;  //斜上方走(对角线)

        a[x][++y] = ++tt;

        while(y-1>=0&&!a[x+1][y-1])   a[++x][--y] = ++tt; //斜下走(对角线)

    }
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-i;j++)
        {
            printf("%3d",a[i][j]);
        }
        printf("\n");
    }

    return 0;
}
C语言每日小练(二)——蛇形 蛇形问题~ 阅读详情

相关推荐

YOLOv8血管分割实战:用Dynamic Snake Convolution提升细长结构识别精度(附完整代码)

本文详细介绍了如何通过Dynamic Snake Convolution(动态蛇形卷积)改进YOLOv8模型,显著提升血管分割任务中对细长结构的识别精度。文章包含完整的代码实现,从动态蛇形卷积原理、血管据集处理到YOLOv8模型改造和训练优化,为医学影像分析提供了实用解决方案。

weixin_42540248的博客 393

蛇形

蛇形 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 在n*n方陈里入1,2,...,n*n,要求蛇形。例如n=4时方陈为: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 输入 直接输入方阵的维,即n的值。(n 输出 输出结果是蛇形方阵。 样例输入 3 样例输出 7 8 1 6 9 2 5

u014574317的博客 280

第10讲:CST SI 预仿真全教程-微带 / 带状 / 蛇形差分传输线参化 3D 建模指南

本文介绍了在CST软件中建立传输线参化三维模型的详细步骤,主要包括微带线、带状线和蛇形带状线三种结构的建模方法。文章分步讲解了从原理图界面创建、参定义到3D模型生成的全过程,重点说明了带状线建模时的波端口尺寸调整和边界条件设置等关键操作,并针对蛇形线重叠问题提供了解决方案。作者强调参化建模虽然步骤较多但能提高模型复用性,建议学习者分步练习以掌握系统仿真建模能力。全文配有具体操作图示,适合信号完整性领域工程师参考学习。

一只豌豆象的博客 103

C语言(24)蛇形

描述 在n*n方陈里入1,2,...,n*n,要求蛇形。例如n=4时方陈为: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 输入 直接输入方陈的维,即n的值。(n&lt;=100) 输出 输出结果是蛇形方陈。 样例输入 3 样例输出 7 8 1 6 9 2 5 4 3   #include &lt;stdio.h&gt; /*...

飞呀飞呀菲 766

算法--蛇形

上,上,上,右,右,下,下,左,上。总之,先是下,到不能为止,然后是左,接着是。上面的方阵中,多余的空格只是为了便于观察规律,不必严格输出。的移动轨迹是:下,下,下,左,左,左,),或者再走就要走到以前过的格子。如果把所有格子初始化为。,就能很方便地加以判断。是指再走就出界(例如。

weixin_62147193的博客 887

一本通网站2045:【例5.13】蛇形

还有一个小细节就是不能写四个if,而是下面的写else if,否则就可能存在什么情况呢,就是上面修改了flag,然后刚好满足下面的if条件,又带着修改了x和y,最后的结果也会有问题。但是我的第一代码写的时候发现,碰壁的条件是什么?我们初始化二维组的所有值都为0,那么就有两种情况,一种是4这种情况,到了边界,需要拐弯,一种是12这个位置的情况,右边已经被充过了。为什么0,1,2,3对应的是下左上右呢,我觉得是便于我理解的,因为一开始是从右上角往下走,然后左拐,然后上拐,然后右拐,这样思路比较连贯。

2403_86879992的博客 513

蛇形 (蓝桥杯) JAVA

如下图所示,小明用从1 开始的正整蛇形充无限大的矩阵。容易看出矩阵第二行第二列中的是5。请你计算矩阵中第20 行第20 列的是多少?容易看出矩阵第二行第二列中的是5。请你计算矩阵中第20 行第20 列的是多少?

Narnat的博客 370

002【模拟】--蛇形方阵、字符串展开

解法:模拟过程即可实现的方式有很多种,这里给大家介绍一种---解决矩阵中的题目1)定义方向向量:先定义两个组dx,dy,这两个组中同一位置所对应的两个是配套使用的,表示向哪个方向走,如下图所示:其中,“右下左上”为题目中所给的“顺时针”方向。2)根据规则结合方向向量:①朝一个方向走,一边走一边,直到越界为止。②越界之后,结合方向向量,重新计算出新的坐标及方向。

2402_87374751的博客 406

notebooklm-py 逆向证据链:用 Blutter 从 Dart AOT 快照精确恢复 NotebookLM Android gRPC 签名

本文基于 notebooklm-py 仓库中一份可复现的逆向工程证据报告([docs/android/blutter-grpc-signature-evidence.md](https://link.gitcode.com/i/54c8c50eb601d3c3d5ae39b3272b735c)),完整拆解"如何从官方 NotebookLM Android APK 的 Dart AOT 快照中,利用

gitblog_00137的博客 939

【C++程序设计】C++初级项目1贪吃蛇大作战开发日志

实现入门游戏界面。

weixin_45725295的博客 460

编程中的蛇形空问题_“不插电”编程兴起,幼儿编程启蒙教育就靠它啦

提及编程,大多家长脑海中浮现的都是大量代码,以及程序员指尖在键盘与鼠标之间飞速切换的高难度操作。这种在电脑屏幕前学习编程的方式,显然不适合年龄尚小的幼儿,毕竟熟练操作鼠标、键盘对幼儿来说已是不可能完成的任务,何况还要理解编程语言、熟记各种编程指令。幼儿的认知发展顺序为触碰、图像、文字,这其实与成年人的认知习惯有很大差异。举个例子,如果家长想让幼儿认识菠萝这种水果,反复记忆绝对是错误的示范。最有效...

weixin_29113371的博客 517

前端开发效率提高之代码规范篇

代码并不是写完了就写完了,因为代码是写给未来的自己和他人看的。那如何保证别人懂你代码的意思呢?要是有一套合适的规范以后维护代码效率岂不是很高呢常见的命名规则1.大驼峰命名...

MrXu的博客 333

PAT A1127 ZigZagging on a Tree ——多情只有春庭月,犹为离人照落花

PAT A1127 ZigZagging on a Tree #include<iostream> #include<vector> using namespace std; struct Node{ int data; int left = -1,right = -1; }; vector<Node> vn; vector<int> vin,vpost; int build(int inL,int inR,int postL,int p

weixin_40852534的博客 149

初学python之绘制蟒蛇动图

import turtle def drawSnake(rad,angle,len,neckrad): for i in range(len): #循环 turtle.circle(rad,angle) #圆的半径以及弧度 turtle.circle(-rad,angle) turtle.circle...

ccclych1的博客 3226

快讯|腔镜手术机器人研发商“北京术锐”完成千万元 A 轮融资,顺为资本领投 ...

2月28日消息,腔镜手术机器人研发公司北京术锐技术有限公司宣布完成千万元A 轮融资,由顺为资本领投,汇鼎基石跟投,老股东天峰医疗继续支持。本轮融资将主要用于扩充研发团队、开展临床研究、拓展手术机器人适应症范围、并完善机器人制造体系、扩大样机生产。 成立于2014 年的术锐是一家致力于独立自主研发、生产和销售微创外科手术机器人系统的高新技术企业,总...

weixin_34245169的博客 212

快讯|腔镜手术机器人研发商“北京术锐”完成千万元 A 轮融资,顺为资本领投...

2月28日消息,腔镜手术机器人研发公司北京术锐技术有限公司宣布完成千万元A 轮融资,由顺为资本领投,汇鼎基石跟投,老股东天峰医疗继续支持。本轮融资将主要用于扩充研发团队、开展临床研究、拓展手术机器人适应症范围、并完善机器人制造体系、扩大样机生产。 成立于2014 年的术锐是一家致力于独立自主研发、生产和销售微创外科手术机器人系统的高新技术企业,总...

weixin_33729196的博客 217

据仓库系列篇之管理规范

@Author : Spinach | GHB @Link : http://blog.csdn.net/bocai8058 文章目录前言 前言

GSpinach的博客 1050

YOLOv9改进目录一览 | 涉及卷积层、轻量化、注意力、损失函、Backbone、SPPF、Neck、检测头等全方位改进

如何寻找创新点?为什么要使用这个模块?如何才能提升模型的精度?这是贯穿我们研究始终的问题。创新点在这个专栏中我已经整理好了,这已经省去了大部分时间,但是当我们使用这些新的模块去优化已有的模型,如何才能提升模型的精度,才是我们要达到的最终目标。当然我们可以使用传统的A+B+C的方法去堆积模块,然后是进行大量的实验去排列组合以实现最终的精度提升,这无可厚非。

Limiiiing的博客 4169
上一篇: 开灯问题-----双重循环及dfs解法
下一篇: 镜像串与回文串
Tket
博客等级 码龄9年 21粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值