模拟(古风排版,回文子串)

古风排版 (20分)

题目链接

题目:

中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。

输入格式:

输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。

输出格式:

按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)

输入样例:

4
This is a test case

输出样例:

在这里插入图片描述
细节分析:

1.注意getchar(); 与getline(cin,a);的配合 (a为string类型,getline会吞掉回车)

  1. 注意一个小细节:

这是组样例是一个小坑(出现len%n==0的情况)
4
swduuif hfbwif wfbwi wfbi

3.s[i%n]+=a[i];不要写成s[i%4]+=a[i];好幼稚啊

4.最后一列是从左往右数第一列 QAQ

代码:

//一道细节题
//ios::sync_with_stdio(false); 
#include<bits/stdc++.h>
#define LL long long
#define fo(i,a,b) for(int i=a;i<b;i++)
#define foo(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
int main(){
    int n; cin>>n;
    string s[n],a;
    getchar();  
    getline(cin,a);
    int len=a.length();
    int k=n-len%n;
    if(k==n)k=0;//排除特例 
    len+=k;
    fo(i,0,k)a+=' ';
    fo(i,0,len)
        s[i%n]+=a[i];
    fo(i,0,n){
        reverse(s[i].begin(),s[i].end());
        cout<<s[i]; 
        if(i!=n-1)cout<<endl; 
    }
    return 0;
}/*
4
swduuif  hfbwif  wfbwi  wfbi
*/

另一道模拟题:

回文子串

大意:

给定一个字符串,输出所有长度至少为2的回文子串

输出格式:

子串长度小的优先输出,若长度相等,则出现位置靠左的优先输出

代码:

#include<iostream>
#include<cstring>
using namespace std;
int main( ){
    char a[505];
    int n,len,begin,maxBegin,i,j;
    cin>>a;
    n=strlen(a);
    for(len=2;len<=n;len++){//枚举子串长度
        maxBegin=n-len;
        for(begin=0;begin<=maxBegin;begin++){//枚举子串的开始点 
            j=begin+len-1;//子串终点 
            for(i=begin;i<j;i++,j--) //遍历当前子串(a[i]~a[begin+len-1]),判断是否回文串 
            	if(a[i]!=a[j]) break;          
            if(i>=j) {//是回文串
                j=begin+len-1;
                for(i=begin;i<=j;i++) cout<<a[i];
                cout<<endl;
            }
        }
    } 
   return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值