HDU-#4706 Children's Day(模拟)
2014-09-06 10:48
435 查看
题目大意:用小写字母输出3至10层的图形,该图形由第一列、最后一列以及对角线构成,要求字符输出是有序的,按照第一列和最后一列从上到下,中间从左到右的顺序。
解题思路:直接就模拟,主要是对下标的控制。解法就是分为三部分,然后每部分枚举下标就可以知道规律,然后进行控制输出即可。注意每一块之间是衔接的,因此要每次输出一块后,要计算下一块的第一个字符的下标。详见code。
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=4706
code:
解题思路:直接就模拟,主要是对下标的控制。解法就是分为三部分,然后每部分枚举下标就可以知道规律,然后进行控制输出即可。注意每一块之间是衔接的,因此要每次输出一块后,要计算下一块的第一个字符的下标。详见code。
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=4706
code:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int n=0,m=0; char str[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 main(){ for(int i=3;i<=10;i++){ for(int j=1;j<=i;j++){ for(int k=1;k<=i;k++){ if(k==i) { //最后一列 n=2*i+j-3+m; while(n>=26) n-=26; printf("%c",str ); } else if(k==i-j+1 && k!=1){ //中间对角线 n=i+k-2+m; while(n>=26) n-=26; printf("%c",str ); } else if(k==1) { //第一列 n=j-1+m; while(n>=26) n-=26; printf("%c",str ); } else printf(" "); } printf("\n"); } m+=3*(i-1)+1;//控制每一个n的第一个字母下标增量 while(n>=26) n-=26; } return 0; }
相关文章推荐
- HDU 4706 Children's Day(模拟啊)
- HDU4706——Children's Day(简单模拟)
- HDU 4706 Children's Day(模拟)
- hdu 4706 (是暴力?还是愚蠢?)Children's Day
- hdu 4706 Children's Day
- hdu 4706 Children's Day 2013年ICPC热身赛A题 模拟
- HDU 4706 Children's Day(模拟)
- hdu 5641 King's Phone 模拟
- HDU 4706 Children's Day(简单模拟)
- HDU 1103.Flo's Restaurant【模拟】【3月2】
- HDU 4119 Isabella's Message(模拟)
- hdu 5640 King's Cake(模拟)
- hdu 4119 Isabella's Message(模拟)
- hdu 4119 Isabella's Message(模拟+字典树)
- hdu 4119 Isabella's Message ( 模拟 )
- HDU 1009 FatMouse' Trade (模拟)
- HDU---Children's queue(递归解法)
- HDU-5186-zhx's submissions(Java+简单模拟)
- hdu 4706 Children's Day 2013年ICPC热身赛A题 模拟
- hdu 1098 Ignatius's puzzle