程序3-3 蛇形填数
2016-07-19 16:02
323 查看
算法竞赛入门经典(第2版)第3章 数组和字符串
程序3-3 蛇形填数
感悟。
1、写一段代码,测试一段(printf),成功率极高。
2、代码可读性强,增加了注释部分。
附上代码:
环境 Dev-cpp4.9.9.2
#include <stdio.h>
int a[10][10];
int n;
void printa(){
int i,j;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
}
int main(){
int i,j;
int k=0;
int count=0;
scanf("%d",&n);
while(1){
for(i=1+k;i<=n-k;i++){//右列
j=n-k;
count++;
a[i][j]=count;
}
for(j=n-1-k;j>=1+k;j--){//下行
i=n-k;
count++;
a[i][j]=count;
}
for(i=n-1-k;i>=1+k;i--){//左列
j=1+k;
count++;
a[i][j]=count;
}
for(j=2+k;j<=n-1-k;j++){//上行
i=1+k;
count++;
a[i][j]=count;
}
k++;//控制二维矩阵左右边界
if(count==n*n)//循环结束条件。
break;
}
printa();//打印矩阵
return 0;
}
程序3-3 蛇形填数
感悟。
1、写一段代码,测试一段(printf),成功率极高。
2、代码可读性强,增加了注释部分。
附上代码:
环境 Dev-cpp4.9.9.2
#include <stdio.h>
int a[10][10];
int n;
void printa(){
int i,j;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
}
int main(){
int i,j;
int k=0;
int count=0;
scanf("%d",&n);
while(1){
for(i=1+k;i<=n-k;i++){//右列
j=n-k;
count++;
a[i][j]=count;
}
for(j=n-1-k;j>=1+k;j--){//下行
i=n-k;
count++;
a[i][j]=count;
}
for(i=n-1-k;i>=1+k;i--){//左列
j=1+k;
count++;
a[i][j]=count;
}
for(j=2+k;j<=n-1-k;j++){//上行
i=1+k;
count++;
a[i][j]=count;
}
k++;//控制二维矩阵左右边界
if(count==n*n)//循环结束条件。
break;
}
printa();//打印矩阵
return 0;
}
相关文章推荐
- android实现登录发送短信验证码或者语音验证码以及一个倒计时的内部类
- 48. Rotate Image(重要)
- java的接口回调机制详解
- HTML5前端开发之基础篇
- 通过Ajax方式上传文件,使用FormData进行Ajax请求
- hadoop 基本操作命令
- 今天是新的一天j
- Android导出Kml
- 如何使用Android Studio把自己的Android library分享到jCenter和Maven Central
- 《剑指offer》第31题:连续子数组的最大和
- md5加密base64加密解密
- 嵌入式C语言实战开发详解(三)
- 架构实践
- JAVA 对象内存分析
- 数学符合和读法
- ES6 扫盲
- 辅助同步器
- 万一开车撞人了,一位退休交警教给你的方法!收藏过千万
- Codeforces Round #316 (Div. 2) A 水
- commons-lang中常用方法