蛇形填数

样例输入:
4
样例输出:
10  11  12  1
9   16  13  2
8   15  14  3
7    6   5  4
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int a[50][50];
    int i,j,x,y,cot,n;
    scanf("%d",&n);
    memset(a,0,sizeof(a));
    cot=a[0][n-1]=1;
    y=n-1,x=0;
    cot=2;
    while(cot<=n*n)
    {
        while(x+1<n&&(!a[x+1][y]))
        {
            a[++x][y]=cot++;
           // printf("1\n");
        }
        while(y-1>=0&&(!a[x][y-1]))
        {
            a[x][--y]=cot++;
            //printf("2\n");
        }
        while(x-1>=0&&(!a[x-1][y]))
        {
            a[--x][y]=cot++;
            //printf("3\n");
        }
        while(y+1<n&&(!a[x][y+1]))
        {
            a[x][++y]=cot++;
            //printf("4\n");
        }
    }
    for(i=0; i<n; i++)
    {
        for(j=0; j<n; j++)
            printf("%3d",a[i][j]);
        printf("\n");
    }
    return 0;
}
时间: 2025-01-30 04:56:51

蛇形填数的相关文章

蛇形填 数

蛇形填数 时间限制: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<=100) 输出 输出结果是蛇形方陈. 样例输入 3 样例输出 7 8 1 6 9 2 5 4 3 细心的朋友可以发现一个特点, 要填 数,其实就是一圈一圈的填 数, 一圈就是4个循环,分别处理右列,下行,左列,上行.

iostream-C++蛇形填数问题, 输出有问题

问题描述 C++蛇形填数问题, 输出有问题 以下是代码,麻烦大神看一下有没有错 输入:n = 4: 结果:14 15 16 1 0 0 0 2 0 0 0 3 7 6 5 4 #include <iostream> #include <iomanip> #define maxn 20 using namespace std; int str[maxn][maxn]; int main() { cout << "输入方阵:"; int n; cin &

C语言蛇形填数

思路就是:右->下->左->上 #include<stdio.h> #include<string.h> int a[10][10]; int main() { int i,j, n, num=0; memset(a, 0, sizeof(a)); scanf("%d", &n); num=a[i=0][j=0]=1; while(num < n*n) { while(j<n-1 && !a[i][j+1])

NYOJ 33(回转填数)

  回转填数(题目叫蛇形填数) 时间限制:3000 ms | 内存限制:65535 KB 难度:3   描述 在n*n方陈里填入1,2,...,n*n,要求填成蛇形.例如n=4时方陈为:10 11 12 19 16 13 28 15 14 37 6 5 4   输入 直接输入方陈的维数,即n的值.(n<=100) 输出 输出结果是蛇形方陈. 样例输入 3 样例输出 7 8 1 6 9 2 5 4 3 #include <stdio.h> int main() { int a[101][1

编程-java 菜鸟求助 求各路大神指教 九宫格如何填数? 需求如下

问题描述 java 菜鸟求助 求各路大神指教 九宫格如何填数? 需求如下 /** 打印一个 9*9 的九宫格 必须满足一下两个条件 条件1: 任意一行或者一列都满足9个不同的数字 条件2: 任意一个小9格正方形都满足9个不同的数字 思想: 通过设定满足条件 无限次循环生成任意数字的矩阵 直到满足后跳出循环 结果失败 */ 解决方案 package com; import java.util.Random; public class ShuDu { /** 存储数字的数组 / private st

[AS功能代码教程02] 数字魔方及数组

数字魔方(经典数据结构实例): 1.本游戏的玩法,均在本FLASH中一一介绍了,博客中不再重复: 下载地址: http://www.flashempire.com/myfe/upload/flash/142/1410014_1195878655.swf 2.编程序的基本原则就是这个游戏玩法的原则即: 1)第一行中间是1: 2)向右1格:向上1格; 3)上边出界,去下边; 4)右边出界,去左边; 5) 没数占着,就填数; 6)有数占着,坐屁股下. 3.下面是矩阵计算的程序: var n:Numbe

经典算法(8) MoreWindows白话经典算法之七大排序总结篇

在我的博客对冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种 常用的排序方法进行了详细的讲解,并做成了电子书以供大家下载.下载地址为: http://download.csdn.net/detail/morewindows/4443208. 有网友提议到 这本<MoreWindows白话经典算法之七大排序>电子书讲解细致用来平时学习是非常好的,但是页数有22页, 不太合适做面试前的复习资料.因此在这里将这七种常用的排序方法进行下总结,以便大家更好的复习这些 经典

经典算法(6) 快速排序 快速搞定

快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序 思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个 ,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影. 总的说来,要直接默写 出快速排序还是有一定难度的,因为本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助 ,达到快速排序,快速搞定. 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了 一

怎么提高WPS文字排版速度

  怎么提高WPS文字排版速度 1.熟练使用几种常用快捷键 初级: Ctrl+N 新建文件 Ctrl+O 打开文件 Ctrl+W 关闭文件 [F12]键: 另存文件 Ctrl+B 字体加粗 Ctrl+U 加下划线 Ctrl+I 字体倾斜 中级: [ctrl+Enter]: 插入分页符 [ctrl+ shift+C]: 复制格式 [ctrl+ shift+V]: 粘贴格式 Ctrl+D 调出"字体"窗口 [ctrl+L]: 左对齐 [ctri+R]: 右对齐 [ctri+C]: 居中 A