CodeFoeces-746B

题目

原题链接:B. Decoding

题意

给出一个字串,它是经过处理的字串,求原字串。每次输出中间的字母。若有两个,则输出左边的那个,随后丢弃该字母,到没有字母结束。代码比较乱,思路是从中间向两头一个一个。

代码

#include<bits/stdc++.h>
using namespace std;
int main() {
    int n,r,l,flag=1;
    char s[2000],t[2000];
    cin>>n>>s;
    if(n%2==0) {
        l=n/2-1;
        r=n/2;
    } else {
        l=r=n/2;
    }
    for(int i=0; i<n; i++) {
        if(i%2==0) {
            t[l]=s[i];
            l--;
            if(n%2!=0 && flag){
                r++;
                flag=0;
            }
        } else {
            t[r]=s[i];
            r++;
        }
    }
    if(n%2!=0) reverse(t,t+n);
    for(int i=0;i<n;i++){
        printf("%c",t[i]);
    }
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。