中石油【递归】分形 未提交

问题 C: 【递归】分形

时间限制: 1 Sec  内存限制: 128 MB
提交: 48  解决: 17
[提交][状态][讨论版]

题目描述

分形,具有以非整数维形式充填空间的形态特征。通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。

盒型分形定义如下:

度数为1的分形为:

X

度数为2的分形为:

X X

X

X X

如果用B(n-1)代表度数为n-1的盒型分形,则度数为n的盒型分形可以递归的定义为:

B(n-1)       B(n-1)

B(n-1)

B(n-1)       B(n-1)

你的任务是输出度数为n的盒型分形。

输入

输入包含多个测试数据,每个测试数据占一行,包含一个正整数n,(n<=7)。输入最后一行为-1,表示结束。

输出

对每个测试数据,用X表示输出的盒型,每个测试数据对应的输出结果后输出一串"----------",每行的末尾不要输出任何多余的空格,否则得到的是格式错误的结果。

样例输入

1
2
3
4
-1

样例输出

X
----------
X X
 X
X X
----------
X X   X X
 X     X
X X   X X
   X X
    X
   X X
X X   X X
 X     X
X X   X X
----------
X X   X X         X X   X X
 X     X           X     X
X X   X X         X X   X X
   X X               X X
    X                 X
   X X               X X
X X   X X         X X   X X
 X     X           X     X
X X   X X         X X   X X
         X X   X X
          X     X
         X X   X X
            X X
             X
            X X
         X X   X X
          X     X
         X X   X X
X X   X X         X X   X X
 X     X           X     X
X X   X X         X X   X X
   X X               X X
    X                 X
   X X               X X
X X   X X         X X   X X
 X     X           X     X
X X   X X         X X   X X
----------思路:注意每一行的末尾都不能有空格,不然会格式错误。    x,y表示每一个图的左上角的坐标。代码:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>

using namespace std;

char a[730][730];

void b(int n,int x,int y){
    if(n==1){
        a[x][y]=‘X‘;
    }else{
        int m=pow(3,n-2);
        b(n-1,x,y);
        b(n-1,x,y+2*m);
        b(n-1,x+m,y+m);
        b(n-1,x+2*m,y);
        b(n-1,x+2*m,y+2*m);
    }
}

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF&&n!=-1){
        memset(a,‘ ‘,sizeof(a));
        b(n,1,1);
        //每行末尾的空格去掉
        for(int i=1;i<pow(3,n-1);i++){
            for(int j=pow(3,n-1);j>1;j--){
                if(a[i][j]!=‘X‘){
                    a[i][j]=‘\0‘;
                }else{
                    break;
                }
            }
        }
        //输出图像
        for(int i=1;i<=pow(3,n-1);i++){
            for(int j=1;j<=pow(3,n-1);j++){
                if(a[i][j]!=‘\0‘){
                    printf("%c",a[i][j]);
                }
            }
            printf("\n");
        }
        printf("----------\n");
    }
    return 0;
}

				
时间: 2024-10-08 15:57:37

中石油【递归】分形 未提交的相关文章

SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因

原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中的事务概念,ACID 原则,事务中常见的问题,问题造成的原因和事务隔离级别等这些方面的知识好好的整理了一下. 其实有关 SQL Server 中的事务,说实话因为内容太多, 话题太广,稍微力度控制不好就超过了我目前知识能力范围,就不是三言两语能够讲清楚的.所以希望大家能够指出其中总结的不足之处,对我

曲苑杂坛--DML操作中如何处理那些未提交的数据

对数据库稍有了解的人,数据库使用排他锁X锁来避免两个事务同时修改同一条数据,同时使用较低级别如行上加锁来提高并发度. 以下了两种场景很容易理解: 1>事务1执行 UPDATE TB1 SET C2=1 WHERE C1=1(此处假设C1为主键,使用行锁),事务1未提交,而后事务2执行UPDATE TB1 SET C2=2 WHERE C1=1,事务2必须等到事务1提交或回滚后,才能获得对该行数据的X锁: 2>事务1执行 UPDATE TB1 SET C2=1 WHERE C1=1(此处假设C1

找出未提交的MySQL线程/事务

找出未提交的MySQL线程/事务: SELECT trx_id,trx_state,trx_started,trx_mysql_thread_id,CURRENT_TIMESTAMP - trx_started AS RUN_TIME from information_schema.innodb_trx; SELECT * from information_schema.processlist;   这个能看到上面哪个SQL线程ID(下图的378号线程就是造成MDL锁的罪魁祸首) SELECT

检查点(Checkpoint)过程如何处理未提交的事务

每次我讲解SQL Server之前,我都会先简单谈下当我们执行查询时,在SQL Server内部发生了什么.执行一个SELECT语句非常简单,但是执行DML语句更加复杂,因为SQL Server要修改内存中的相关页,并在事务日志里记录整个事务. 介绍完这些特定步骤后,我总会问同样的问题:当我们有个未提交的事务,这个时候刚好有检查点(Checkpoint)发生,SQL Server会崩溃么?在我们数据文件里有我们未提交的数据么?先思考下,然后再写下你的答案. 创建测试场景 现在我想和你一起重建这个

InnoDB---读未提交隔离级别的实现

读未提交的实现 对于读未提交隔离级别,此级别不会对记录加锁,有如下几种情况: 1  对系统表的数据操作,是数据引擎自己发出的数据查询操作,使用读未提交隔离级别,目的是不与其它事务因锁的存在而冲突. 2  在row_search_mvcc().row_sel_get_clust_rec_for_mysql()等获取记录的函数中确保读未提交隔离级别下允许读到最新的记录. 那么,怎么才能读到最新的记录呢?以row_search_mvcc()为例, 我们来看代码实现方式:对于读未提交的隔离级别,代码什么

事务隔离级别区分,未提交读,提交读,可重复读

事务隔离超通俗好懂的的讲解 按照隔离的级别由低到高,越高的隔离,效率越差 0).DEFAULT 默认隔离级别,由数据库的数据隔离级别确定隔离级别       1).READ_UNCOMMIYTTED 都未提交的 级别最低             允许别的事务,去读取这个事务为提交之前的数据             缺点:可能会造成脏读.幻读.不可重复读.             例子讲解:店家对1000元商品进行降价500处理,数据更改,但未提交事务:             然后你查到降价将货

C#中使用 HttpWebRequest 向网站提交数据

HttpWebRequest 是 .NET 基类库中的一个类,在命名空间 System.Net 里,用来使用户通过 HTTP 协议和服务器交互. HttpWebRequest 对 HTTP 协议进行了完整的封装,对 HTTP 协议中的 Header, Content, Cookie 都做了属性和方法的支持,很容易就能编写出一个模拟浏览器自动登录的程序. 下面是HttpWebRequest的一些属性,这些属性对于轻量级的自动化测试程序是非常重要的. AllowAutoRedirect:获取或设置一

SQLServer之创建事务未提交读

未提交读注意事项 使用 SET TRANSACTION ISOLATION LEVEL 指定会话的锁定级别. 一次只能设置一个隔离级别选项,而且设置的选项将一直对那个连接始终有效,直到显式更改该选项为止. 事务中执行的所有读取操作都会在指定的隔离级别的规则下运行,除非语句的 FROM 子句中的表提示为表指定了其他锁定行为或版本控制行为. 事务隔离级别定义了可为读取操作获取的锁类型. 在事务进行期间,可以随时将事务从一个隔离级别切换到另一个隔离级别,但有一种情况例外. 即在从任一隔离级别更改到 S

数据库隔离级别,读已提交,读未提交

同样是后端开发,年薪50万和年薪20万的差距在哪里>>> 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted.Read committed.Repeatable read.Serializable,这四个级别可以逐个解决脏读.不可重复读.幻读这几类问题. √: 可能出现    ×: 不会出现 事务的隔离级别 脏读 不可重复读 幻读 Read uncommitted √ √ √ Read committed--Sql Server , Oracle × √ √ Re