小谈边界问题
来源:互联网 发布:星际争霸人类 知乎 编辑:程序博客网 时间:2024/05/18 22:53
边界问题主要有两种,动态关系的,还有就是静态关系的.
第一类是有一定对称性的几何图形,比如说打印倒三角形或者菱形等.这种题目一般思路就是找出图形的特点(对称性等)与循环变量(行号,列号)之间的关系.
我们可以假设行用i表示,列用j表示.我们的目的就是找出i,j与图形之间的对应关系.按图形形状的不同,复杂性不同.但是都可以看做是在寻找一种或多种"静态关系".
这类题主要有打印三角形,代码如下:
#include<stdio.h>#include<string.h>int main(){int i,j,n,m;char a[110][110];scanf("%d",&n);while(n--){memset(a,0,sizeof(a));scanf("%d",&m);for(i=1;i<=m/2;i++){for(j=1;j<=m;j++){if(j<=m-i+1&&j>=i)a[i][j]='*';elsea[i][j]=' ';}}for(;i<=m;i++){for(j=1;j<=i;j++){if(j>=m-i+1&&j<=i)a[i][j]='*';elsea[i][j]=' ';}}for(i=1;i<=m/2;i++){for(j=1;j<=m;j++){if(i+j>m+1)break;printf("%c",a[i][j]);}printf("\n");}for(;i<=m;i++){for(j=1;j<=i;j++)printf("%c",a[i][j]);printf("\n");}}return 0;}
//这是放大的X的代码 有异曲同工之妙 故粘贴如下 #include<stdio.h>#include<string.h>int main(){ int n,i,j,m; char a[82][82]; scanf("%d",&m); getchar(); while(m--) { memset(a,0,sizeof(a)); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(i==j||j==n-i+1) a[i][j]='X'; else a[i][j]=' '; } } for(i=1;i<=n/2;i++) { for(j=1;j<=n;j++) { if(j+i>n+1) break; printf("%c",a[i][j]); } printf("\n"); } for(;i<=n;i++) { for(j=1;j<=i;j++) { printf("%c",a[i][j]); } printf("\n"); } printf("\n"); } return 0;}
第二类是有一定规律性的图形,比如蛇形填数,走棋盘等.这种题目的一般思路就是找出题 目中对图形的限制条件(不能出界,按照一定规则填充等).
我们用各种循环和If语句将这些“规则”变成程序语句.同样,根据“规则”不同,复杂性也不 同.但是都可以看做是在寻找一种或多种"动态关系".
现将蛇形填数代码粘贴如下:
#include<stdio.h>#include<string.h>int main(){int a[110][110];int x,y,n,m;scanf("%d",&n);memset(a,0,sizeof(a));m=a[x=0][y=n-1]=1;while(m<n*n){while(x+1<n&&!a[x+1][y])a[++x][y]=++m;while(y-1>=0&&!a[x][y-1])a[x][--y]=++m;while(x-1>=0&&!a[x-1][y])a[--x][y]=++m;while(y+1<n&&!a[x][y+1])a[x][++y]=++m;}for(x=0;x<n;x++){for(y=0;y<n;y++){printf("%3d",a[x][y]);}printf("\n");}return 0;}
1 0
- 小谈边界问题
- 边界问题
- iOS7UIView边界问题
- 事务边界问题
- 数组边界问题
- AGG渲染的边界问题
- 二分注意边界问题
- C 超出数组边界问题
- 二分查找的边界问题
- NGUI 地图移动 边界问题
- oracle between and 边界问题
- UIScrollView 边界问题处理
- 二分查找(边界问题)
- 二分法查找的边界问题
- java split 方法边界问题
- Oracle between and 边界问题
- mina、netty消息边界问题
- 流体模拟边界问题
- MySQL查询优化的5个好用方法
- android canvas void drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)
- 什么叫做上网?htpp协议又是什么?网站工作的原理?
- ggplot2学习心得之qplot
- 经纬财富:汉中今日非农多空巅峰对决
- 小谈边界问题
- shell 中getopts的简单解述
- 二叉树相关操作(最全前中后遍历 等)
- 网站开发日记(14)-MYSQL子查询和嵌套查询优化
- 你真的会python嘛?
- 九度题目1447:最短路
- 网站开发-php开发手机论坛(2)-http协议以及网络原理
- 0x00AE18F8 处有未经处理的异常: 0xC0000005: 读取位置 0x00000020 时发生访问冲突。
- Python的魔法(一): 基本知识