题目-剥洋葱
来源:互联网 发布:淘宝物流单号查询 编辑:程序博客网 时间:2024/04/29 02:14
5-14 剥洋葱 (15分)
布告,布告! 应老师要求,我们要做一道打印图形的题目,这是程序员最基本的能力。 那废话不多说,我们来说要求的图形 AAAAA ABBBA ABCBA ABBBA AAAAA 就是外到内,从A到Z。每一层都是一种字母,最里面的一层为一个,即最中心的一个。
输入格式:
一行,一个整数,即图形的层数
输出格式:
如上述图形
输入样例:
3
输出样例:
AAAAAABBBAABCBAABBBAAAAAA
思路:
先画一个n=7的图像:
如图图像所示(默认的i代表行,j代表列):看图像可以发现,第i行与第7-i-1是等价的;第j列与第7-j-1l列是等价的额,所以处理图像的时候可以只处理如下的图像:
再观察该图像可以发现:所有的A均有一个特点,坐标中含有0;所有的B均有一个特点,坐标中含有1;所有的C中均含有一个特点,坐标中均含有2;D的坐标中均含有3;再利用这个特点控制输出的内容。
源代码:
#include<stdio.h>int compare(int x,int y){if(x>y){return y;} else{return x;}}int main(){char ch[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};int number,control,n,temp,yemp;scanf("%d",&number);control=number*2-1;//i表示行,j标示列 for(int i=0;i<control;i++){ temp=i;if(temp>control/2){temp=control-temp-1;}for(int j=0;j<control;j++){yemp=j;if(yemp>control/2){yemp=control-yemp-1;}/*如下的代码是最关键的地方,它将输出的内容与字符结合在了一起;输入的number其实是输出字母的种类数所以有这样的一个规律:一个坐标所具有的特征数就是输出字符在ch数组中所对应的字符数,至于这个特征数,该数就是坐标中比较小的那个数 */for(int n=0;n<number;n++){if(temp==n||j==n){n=compare(temp,yemp);printf("%c",ch[n]);break;}}if(j==control-1){printf("\n");}}}}
0 0
- 题目-剥洋葱
- 剥洋葱
- 打印·剥洋葱
- Android剥洋葱式解析JSON数据
- pid_t的类型定义,一层一层剥洋葱
- 最近很火的OkHttp剥洋葱系列
- 剥 山地剥 艮上坤下
- 洋葱排骨
- 洋葱电影
- 洋葱盒子
- 开剥了
- 西式洋葱炒鸡蛋
- 洋葱炒肉
- 从洋葱看到的
- 洋葱三角剖分
- 【9】洋葱炒肉丝
- 洋葱炒肉
- 洋葱炒蛋 && 蒜苔炒肉
- SpringMVC的实现原理
- 求最长连续递增公共子序列
- 选择排序代码
- Ծ‸ Ծ 位运算
- CentOS7 配置阿里云yum源
- 题目-剥洋葱
- 李航《统计学习方法》第六章——用Python实现最大熵模型(MNIST数据集)
- 动态规划——最长公共子序列
- 安卓(Android)ViewPager+TabLayout实现图片轮播效果
- NDK开发学习笔记—C代码返回中文乱码处理
- 如何将一串字符中的数字加和
- 经典算法:字符串的匹配压缩
- Tomcat初步学习
- c/c++复杂申明