hrbust 2162 哈理工oj 2162 【分形图、搜索】
来源:互联网 发布:少林足球 知乎 编辑:程序博客网 时间:2024/06/08 14:11
默认三角形(n=3)是形如下列形状的:
*
* *
* *
* * * *
n = 4时是这样的
*
* *
* *
* * * *
* *
* * * *
* * * *
* * * * * * * *
要求输入一个整数n(3<=n<=9),输入符合题意的图形。
Input多组测试数据,每组一个整数n(3<=n<=9),为一行。
Output输出图形。注意每行后面没有多余空格。
Sample Input3
4
6
Sample Output*
* *
* *
* * * *
*
* *
* *
* * * *
* *
* * * *
* * * *
* * * * * * * *
*
* *
* *
* * * *
* *
* * * *
* * * *
* * * * * * * *
* *
* * * *
* * * *
* * * * * * * *
* * * *
* * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
* *
* * * *
* * * *
* * * * * * * *
* * * *
* * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
* * * *
* * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Source2014暑假集训练习赛(8月13日)解题过程:
n==3的时候图是这样的:
*
* *
* *
* * * *
做分形题第一个要点一定要找到最基础的图形才行,其实这个图算作一个基础图形也可以,但是操作相对会繁杂一点,所以我们可以弄出n==2的时候的图(虽然不需要输出n==2的时候的图)这个时候我们对于n==3的图进行探究。
其实我们可以利用深搜递归的思想来从最基础也是最顶端的这个最基础的图的三个点递推向下找他们递归到的位子如图:
为了更加突出递归的思想,我们对于n==4的图进行一个顶点的探究:
从中慢慢得出规律,从而得之,我们只要递归一下最基础图(n==2时候的图)的三个点就行了、
初始化的时候我们将输出的数组都初始化为空格,然后等递归完毕之后,从后边向前扫,如果扫到了*,后边加一个‘\0’即可保证没有多余空格的输出。
AC代码:
#include<stdio.h>#include<string.h>#include<math.h>using namespace std;char a[4000][4000];void dfs(int shendu,int x,int y){ a[x][y]='*'; if(shendu==1)return ; dfs(shendu-1,x,y); dfs(shendu-1,x+pow(2,shendu-1),y-pow(2,shendu-1)); dfs(shendu-1,x+pow(2,shendu-1),y+pow(2,shendu-1));}int main(){ int n; while(~scanf("%d",&n)) { n--; memset(a,' ',sizeof(a)); dfs(n,1,pow(2,n)); dfs(n,2,pow(2,n)-1); dfs(n,2,pow(2,n)+1); for(int i=0;i<pow(2,n)+1;i++) { for(int j=pow(2,n+1)+1;j>=0;j--) { if(a[i][j]=='*') { a[i][j+1]='\0'; break; } } } for(int i=1;i<pow(2,n)+1;i++) { printf("%s\n",a[i]+1); } }}
- hrbust 2162 哈理工oj 2162 【分形图、搜索】
- hrbust/哈理工oj 1042 过河卒【记忆化搜索】
- hrbust 哈理工oj 1588 神医【贪心】
- hrbust 哈理工oj 网线【MST+Prim】
- 哈理工oj/hrbust 1790 武林【DP】
- hrbust哈理工oj 1674 充电【贪心】
- hrbust 哈理工oj 1330 邂逅【模拟】
- hrbust/哈理工oj 1877 区间【水题】
- POJ 1579/hrbust 1029/哈理工oj 1029 Function Run Fun【记忆化搜索】
- Hrbust oj/哈理工 oj 1216数的划分
- 哈理工hrbust OJ 2225 解题报告 【递推】
- hrbust 哈理工OJ 1918 M数【数位dp基础】
- hrbust 哈理工OJ 2133 最快通过【dijkstra过】
- hrbust 哈理工oj 1752Page Rank【线段树好题】
- 哈理工oj hrbust 2267 从前的运算符【思维】
- hrbust 2147 哈理工oj 经理办公室【水题】
- hrbust 哈理工OJ 1498Elevator Trouble【BFS过】
- hrbust 哈理工oj 2011 一等队形【dp】
- Visual Studio——设置缩进
- RecycleView 实现瀑布流 添加分隔
- JVM--内存调优
- ThreadLocal(1)
- c++ 删除空格的函数
- hrbust 2162 哈理工oj 2162 【分形图、搜索】
- andbase学习笔记六
- alertController和UIAlertView 使用示例
- 【EJB基础】Message Driven Bean
- java.io.EOFException
- dicom协议研究之echo流程分析
- 【LeetCode】.1.Two Sum
- mysql优化-- int类型解析及其优化
- Android View事件机制 21问21答