螺旋数组。。。。(今天输错一个东西,检查花了好多时间)
2010-08-05 15:54
295 查看
把其中一个[i-1]输入成了i[--],找了1个多小时。
但是,老师检查我的错的时候。
我感觉还是学到了东西
学会了,用getchar(); 来让程序一个一个输入。
学会了。先注释一部分,再来找错误。缩小检查范围。。。。
#include <stdio.h>
int main()
{
int m=2; //m表示第几个数
int a[10][10]={1};
int dir=0; //表示第几种情况 ,分为0,1,2,3
int i=0,j=0;
while(m<=25)
{
getchar();
printf("%d/n",m);
switch(dir)
{
case 0: //向右移动
while(j<4 && a[i][j+1]==0) a[i][++j]=m++;
break;
case 1: //向下
while(i<4 && a[i+1][j]==0) a[++i][j]=m++;
break;
case 2: //向左
while(j>0 && a[i][j-1]==0) a[i][--j]=m++;
break;
case 3: //向上
while(i>0 && a[i-1][j]==0) a[--i][j]=m++;
break;
default: break;
/* case 0: while(j<4 && a[i][j+1]==0) a[i][++j]=m++;
break;
case 1: while(i<4 && a[i+1][j]==0) a[++i][j]=m++;
break;
case 2: while(j>0 && a[i][j-1]==0) a[i][--j]=m++;
break;
case 3: while(i>0 && a[i-1][j]==0) a[--i][j]=m++;
break;
default: break;
*/
}
dir=(dir+1)%4;
}
printf("gdf/n");
for(i=0;i<=4;i++)
{
for(j=0;j<=4;j++)
{
printf("%4d/t",a[i][j]);
}
printf("/n");
}
}
但是,老师检查我的错的时候。
我感觉还是学到了东西
学会了,用getchar(); 来让程序一个一个输入。
学会了。先注释一部分,再来找错误。缩小检查范围。。。。
#include <stdio.h>
int main()
{
int m=2; //m表示第几个数
int a[10][10]={1};
int dir=0; //表示第几种情况 ,分为0,1,2,3
int i=0,j=0;
while(m<=25)
{
getchar();
printf("%d/n",m);
switch(dir)
{
case 0: //向右移动
while(j<4 && a[i][j+1]==0) a[i][++j]=m++;
break;
case 1: //向下
while(i<4 && a[i+1][j]==0) a[++i][j]=m++;
break;
case 2: //向左
while(j>0 && a[i][j-1]==0) a[i][--j]=m++;
break;
case 3: //向上
while(i>0 && a[i-1][j]==0) a[--i][j]=m++;
break;
default: break;
/* case 0: while(j<4 && a[i][j+1]==0) a[i][++j]=m++;
break;
case 1: while(i<4 && a[i+1][j]==0) a[++i][j]=m++;
break;
case 2: while(j>0 && a[i][j-1]==0) a[i][--j]=m++;
break;
case 3: while(i>0 && a[i-1][j]==0) a[--i][j]=m++;
break;
default: break;
*/
}
dir=(dir+1)%4;
}
printf("gdf/n");
for(i=0;i<=4;i++)
{
for(j=0;j<=4;j++)
{
printf("%4d/t",a[i][j]);
}
printf("/n");
}
}
相关文章推荐
- 今天看了好多东西,主要发现了一个很好的网站叫慕课网
- 今天去另外一个实验室做了下进度条 ajax控件的相关东西
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。 请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n), 空间复杂度是O(1)
- 【C语言】建立动态数组,输入五个学生的成绩,另外用一个函数检查有无60分以下的,输出不合格成绩
- 问题描述:一个长度为2n的(整型)数组元素为 a1 a2 ... an b1 b2 ... bn 要求: 用O(1)的空间代价, 在O(n)时间内把数组变成 a1 b1 a2 b2 a3 b3 ... an bn
- (思科笔试)数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字.时间复杂度必须为o(N)函数原型:
- 一个整型数组里除了一个或者两个或者三个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)
- 七、如何在Java中高效检查一个数组是否含有一个值
- 请问对一个排好序的数组进行查找,时间复杂度为()
- 检查是否为一个合法的时间格式php
- 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N)
- 今天学习时突然联想到这样一个有趣但无用的问题:利用C语言(不能是其他语言)求两个整数的较大/小值-----要求不用if、三目?、switch、循环、数组、加减乘除求余、位运算符以及任何库函数
- 建立一个动态数组,输入5个学生的成绩,另外用一个函数检查其中有无低于60分的,输出不合格的成绩
- 整数数组中,每个元素均出现两次,除了一个元素例外,如何找出这个元素?能否设计一个线性时间的算法,且不需要额外的存储空间?
- 今天看到一个比较有意思的检查交换机端口好坏的方法
- 自己的坟被人挖了怎么办,今天是一个时间限制
- Javascript检查时间不能大于今天
- 一个数组中除了两个数字之外,其余数字均出现了两次,如{1,2,3,4,5,3,2,1}.查找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(1)。
- 不好意思啊,我上周到今天不到10天时间,用纯C语言写了一个小站!想拍砖的就赶紧拿出来拍啊
- 算法面试题——两个有序数组,将一个数组放入另一个空间很大的数组,要求合并之后依然有序,时间复杂度要求最小,不使用额外的数组。