算法题,打印沙漏

#include <iostream>
using namespace std;
int sak(int z)
{
    return 1 + 4 * z + 2 * z * z;
}
int main()
{
    int x;
    char a;
    cin >> x >> a;
    //cout << x << a << endl;
    int n = 0;
    //cout << sak(n + 1) << endl;
    while(!((x >= sak(n)) && (x < sak(n + 1))))
    {
        n++;
        //cout << n << endl;
    }
    //cout << n;
    int k = n;
    int r = 0;
    for (; k != 0; k--,r++)
    {
        int s = 2 * k + 1;
        for (int i = 0; i < r; i++)
        {
            cout << " ";
        }
        for (int j = 0; j < s; j++)
        {
            cout << a;
        }
        cout << endl;
    }
    for (int i = 0; i < r; i++)
    {
        cout << " ";
    }
    cout << a << endl;
    k++; r--;
    for (; k != n + 1; r--, k++)
    {
        int s = 2 * k + 1;
        for (int i = 0; i < r; i++)
        {
            cout << " ";
        }
        for (int j = 0; j < s; j++)
        {
            cout << a;
        }
        cout << endl;
    }

    cout << x - sak(n);
    system("pause");
    return 0;

}

原文地址:https://www.cnblogs.com/huaye37/p/9699454.html

时间: 2024-10-24 13:42:33

算法题,打印沙漏的相关文章

笔试算法题(20):寻找丑数 &amp; 打印1到N位的所有的数

出题:将只包含2,3,5的因子的数称为丑数(Ugly Number),要求找到前面1500个丑数: 分析: 解法1:依次判断从1开始的每一个整数,2,3,5是因子则整数必须可以被他们其中的一个整除,如果不包含任何其他因子则最终的结果为1: 解法2:小丑数必然是某个大丑数的因子,也就是乘以2,3,或者5之后的值,所以可以利用已经找到的丑数来寻找下一个丑数,使用数组有序保存已经找到的丑 数,并且当前最大丑数值为M:用大于M/2的丑数乘以2得到M1,用大于M/3的丑数乘以3得到M2,用大于M/5的丑数

算法题:打印1到最大的n位数

说明:本文仅供学习交流,转载请标明出处,欢迎转载! 今天看到剑指offer上的第12题,题目例如以下: 输入数字n.按顺序打印出从1到最大的n位十位数. 比方输入3,则打印出1,2,3,...,999. 当我看到这个题目的时候.第一感觉就是用递归,为什么呢?首先得从我们的一个实际数字出发,比方123.我们对数字加1,实际上分为例如以下两个步骤: 步骤1:最低位加1: 步骤2:若发生进位,则向更高位传播该进位的影响(这也是递归的所在). 在完毕这个算法题之前.我想插一句"细节决定成败!"

算法题之二(从尾到头打印链表)

链表节点定义如下: 1 typedef struct ListNode 2 { 3 int value; 4 ListNode *next; 5 }TListNode; 众所周知,链表打印时从头到尾很简单,所以我们首先想到的可能是先把链表逆序,然后从头到尾再打印出来即可,但是逆序会破坏链表的结构,对于打印操作来说仅仅是读操作而已,如果破坏了链表结构似乎不和常理,哪么我们是否有更好的解决办法呢?答案是肯定的. 我们知道要解决该问题肯定需要遍历链表,而第一个遍历的节点需要最后一个打印出来,而最后一个

PAT (Basic Level) Practise (中文)1027. 打印沙漏(20)

1027. 打印沙漏(20) 时间限制 200 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印出

简单的PHP算法题(带扩充)

简单的PHP算法题(待完善…) 只打印0 具体个数由输入的参数n决定 如n=5就打印00000 根据n值打印n个0 打印一行 0101010101010101010101 具体个数由输入的参数n决定 如test.php?n=3打印010 根据n值打印010101… 实现1 00 111 0000 11111 for if 实现 <?php for ($i = 0; $i < 10; $i++) { for ($j = 0; $j <= $i; $j++) { if ($i % 2 ==

一天一道算法题--5.29---动态规划之数塔

感谢微信平台:  一天一道算法题-------每天多一点进步----------- 这题的话 我就直接用我们自己Oj的题目了 戳我 好吧  如今看这题  是很简单  当时 是块被它搞崩溃了   因为 还不知道  dp 这个概念 现在有了这个概念   好多了  但还是 只能做做这种水 dp.... 多么悲伤的故事 这题 因为太水了   晚上 应该会去找个高质量的题来做的 如果你是dp刚刚学 这题真的很适合你 1 #include <iostream> 2 #include <cstring

笔试算法题(06):最大连续子数组和 &amp; 二叉树路径和值

出题:预先输入一个整型数组,数组中有正数也有负数:数组中连续一个或者多个整数组成一个子数组,每个子数组有一个和:求所有子数组中和的最大值,要求时间复杂度O(n): 分析: 时间复杂度为线性表明只允许一遍扫描,当然如果最终的最大值为0表明所有元素都是负数,可以用线性时间O(N)查找最大的元素.具体算法策略请见代码和注释: 子数组的起始元素肯定是非负数,如果添加的元素为正数则记录最大和值并且继续添加:如果添加的元素为负数,则判断新的和是否大于0,如果小于0则以下一个元素作为起始元素重新开始,如果大于

L1-002. 打印沙漏

L1-002. 打印沙漏 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ***** 所谓"沙漏形状",是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏

本猿新接触(内附PHP开发环境与PHP简单算法题)——2015.07上半月

PHP&MYSQL 开发环境准备 SAE http://sae.sina.com.cn/ GitHub https://github.com/ Git http://git-scm.com/ 代码部署手册 http://sae.sina.com.cn/doc/tutorial/code-deploy.html bootstrap.css http://cdn.bootcss.com/bootstrap/3.3.4/css/bootstrap.css Bootstrap前端开发框架 http://

笔试算法题(37):二叉树的层序遍历 &amp; 最长递增的数字串

出题:要求层序遍历二叉树,从上到下的层次,每一层访问顺序为从左到右,并将节点一次编号,输出如下:如果只要求打印指定的level的节点,应该如何实现. a b  c d  e  f  g h  i  分析: 原始的层序遍历类似于BFS,打印当前访问的节点curNode的序列号,并将其直接子节点放入队列queue中,然后从queue中取出下一个节点,直 到队列为空:此方法仅能按照层序打印所有节点,并不能区分每一层节点的数量:如果需要区分当前层次的节点,和当前层次节点的子节点,可以使用两个队列 que