zoukankan      html  css  js  c++  java
  • 1027 打印沙漏

    1027 打印沙漏 (20分)
     

    本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印

    *****
     ***
      *
     ***
    *****
    
     

    所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。

    给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。

    输入格式:

    输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。

    输出格式:

    首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。

    输入样例:

    19 *
    
     

    输出样例:

    *****
     ***
      *
     ***
    *****
    2

        这道题还是比较有意思的,不过要注意,当N<7时就直接输出一个字符就行了,字符的话都是可见的,没有空格什么的,因为我试过了,有两个测试点通不过。

        附上代码

     1 #include<iostream>
     2 #include<vector>
     3 using namespace std;
     4 int main()
     5 {
     6     int N,i,k,sum;
     7     char ch;
     8     vector<int> v;
     9     cin>>N>>ch;
    10     for(i=1,sum=1;2*sum-1<=N;i+=2,sum+=i)
    11         v.push_back(i);
    12     sum-=i;  //获取单个三角形的最大个数
    13     for(k=0,i=v.size()-1;i>=0;i--){  //打印倒三角
    14             for(int j=0;j<k;j++) //打印空格
    15                 cout<<" ";
    16             for(int j=0;j<v[i];j++)
    17                 cout<<ch;
    18             cout<<endl;
    19             k++;  //下一次输出的空格要多一个
    20     }
    21     for(i=1,k-=2;i<v.size();i++){  //打印正三角
    22             for(int j=0;j<k;j++) //打印空格
    23                 cout<<" ";
    24             for(int j=0;j<v[i];j++)
    25                 cout<<ch;
    26             cout<<endl;
    27             k--;  //下一次输出的空格要多一个
    28     }
    29     cout<<N-(2*sum-1)<<endl;
    30     return 0;
    31 }

    ac了

  • 相关阅读:
    让你的网站(MAXCMS4_0)按地区、年份、语言生成分页面(已经修正)
    IPTV
    超简单,MAX普通版改为资源版方法
    Jmter操作数据库
    JMter中添加断点和关联
    jmeter返回报文乱码问题
    Jmter安装和配置
    JMter压力测试
    今天注册了
    不能登陆后删除Cookies解决
  • 原文地址:https://www.cnblogs.com/buanxu/p/12813405.html
Copyright © 2011-2022 走看看