数据结构书上的纵横图代码

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
int main()
{
    int m, magic[MAXSIZE][MAXSIZE] = {0}, i = 0,j, x, y;
    scanf("%d",&m);
    magic[i][m/2] = 1;
    x = 0;y =m/2;
    for(i = 2;i <= m*m ;i++)//我进行的优化及改进
    {
        if(magic[(x-1+m) % m][(y-1+m) % m] == 0) //先进行判断是否理应填的位置是否被占
        {
            x = (x-1+m) % m;//没被占进行赋值操作
            y = (y-1+m) % m;
        }
        else//否则直接移动到它元素的下方,(横坐标+1)% m,纵坐标不变
        {
            x = (x+1) % m;
        }
     magic[x][y] = i;
    }
    for(i = 0; i < m ;i++)
    {
        for(j = 0;j < m;j++)
            printf("%d ",magic[i][j]);
        printf("\n");
    }
}
/*#include <stdio.h>//书上思路
#include <stdlib.h>
#define MAXSIZE 20
int main()
{
    int m, magic[MAXSIZE][MAXSIZE] = {0}, i = 0,j, x, y;
    scanf("%d",&m);
    magic[i][m/2] = 1;
    x = 0;y =m/2;
    for(i = 2;i <= m*m ;i++)
    {
        x = (x-1+m) % m;//先找到理应的位置直接将横纵坐标进行赋值
        y = (y-1+m) % m;
         if(magic[x][y] != 0 )//如果不等于0,此位置被占
        {
            x = (x+2+m) % m;//注意x在之前被改动到理应存在的位置,注意理应存在的位置和上一个元素下面位置的关系
            y = (y+1+m) % m;
        }
     magic[x][y] = i;
    }
    for(i = 0; i < m ;i++)
    {
        for(j = 0;j < m;j++)
            printf("%d ",magic[i][j]);
        printf("\n");
    }
}*/

原文地址:https://www.cnblogs.com/cstdio1/p/10884987.html

时间: 2024-07-29 23:50:22

数据结构书上的纵横图代码的相关文章

数据结构--书上代码用栈求解迷宫问题存在BUG(非最优解)

数据结构第四版p79页迷宫问题我觉得存在BUG,下图盗用贺老师就会的QAQ,也希望贺老师能看到帮忙解答一下啦. BUG:  程序从起始点(1,1)开始寻找路径,在当前点进行判断其上下左右是否存在可走点,如果从(1,1)点开始判断如图那么它的右(1,2)下(2,1)都是可走点那么将右边的格子坐标进栈呢还是将下边的格子坐标进栈?书本上给的代码是先判断上边格子再判断右边格子再判断下边格子再判断左边格子,这就造成了一个问题:(1,2)则个点会被进栈(因为(1,2)点位于(1,1)点的右边被先判断进栈),

表达式求值(数据结构书上栈的应用之一)

主要内容:表达式求值,提交nyoj通过... 思路:主要就是一个开两个栈,然后一个操作符栈,一个操作数栈.. 我的代码如下(比较简洁): /***** Author Gery ******/ #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<map> #include<vector> #include<cmath&

表达式求值(数据结构书上栈的应用之中的一个)

主要内容:表达式求值.提交nyoj通过... 思路:主要就是一个开两个栈,然后一个操作符栈.一个操作数栈. . 我的代码例如以下(比較简洁): /***** Author Gery ******/ #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<map> #include<vector> #include<cma

OpenACC 书上的范例代码(Jacobi 迭代),part 2

? 使用Jacobi 迭代求泊松方程的数值解 ● 首次使用 OpenACC 进行加速,使用动态数组,去掉了误差控制 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <math.h> 4 #include <openacc.h> 5 6 #if defined(_WIN32) || defined(_WIN64) 7 #include <C:\Program Files (x86)\Window

OpenACC 书上的范例代码(Jacobi 迭代),part 3

? 使用Jacobi 迭代求泊松方程的数值解 ● 使用 data 构件,强行要求 u0 仅拷入和拷出 GPU 各一次,u1 仅拷入GPU 一次 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <math.h> 4 #include <openacc.h> 5 6 #if defined(_WIN32) || defined(_WIN64) 7 #include <C:\Program File

uva 213 - Message Decoding (我觉得我的方法要比书上少很多代码,不保证好……)

#include<stdio.h> #include<math.h> #include<string.h> char s[250]; char a[10][250]; int a1[4]; int a2[250]; char ch; int init(int len) { int tt=0; for(int i=1;i<=7;i++) { for(int j=0;j<(int)pow(2,i)-1;j++) { a[i][j]=s[tt++]; if(tt&

C#高级编程(第9版) -C#5.0&amp;.Net4.5.1 书上的示例代码下载链接

http://www.wrox.com/WileyCDA/WroxTitle/Professional-C-5-0-and-NET-4-5-1.productCd-1118833031,descCd-DOWNLOAD.html http://www.cnblogs.com/zhouyinhui/archive/2007/11/08/952020.html   //中文简易版 https://msdn.microsoft.com/en-us/library/ms788718.aspx  英文版本的

Java 初学 第一弹--编译并运行书上的简单程序(猜数字小游戏)

(博主原创) 首先说明一下,博主是大一上学期结束寒假时自己看的Java,然后我看的是Head First Java的中文版,因为大一学了c,所以里面的一些基本思想还是了解的,在看这本书时就浏览了一下(就是那种光看没有自己动手去敲代码的),然后看到书上的一个猜数字小游戏,就想手动敲一下,熟悉熟悉Java的语法,但是真正去做时,发现比看起来要困难一些. 首先是Java在建立一个源码文件之前要先建一个package,然后我用的Eclipse写的Java(感觉和pycharm风格差不多),再新建一个文件

OK 开始实践书上的项目一:即使标记

OK 开始实践书上的项目一:及时标记 然而....又得往前面看啦! ----------------------我是分割线------------------------ 代码改变世界