L1-054 福到了 (15分)
“福”字倒着贴,寓意“福到”。不论到底算不算民俗,本题且请你编写程序,把各种汉字倒过来输出。这里要处理的每个汉字是由一个 N × N 的网格组成的,网格中的元素或者为字符 @
或者为空格。而倒过来的汉字所用的字符由裁判指定。
输入格式:
输入在第一行中给出倒过来的汉字所用的字符、以及网格的规模 N (不超过100的正整数),其间以 1 个空格分隔;随后 N 行,每行给出 N 个字符,或者为 @
或者为空格。
输出格式:
输出倒置的网格,如样例所示。但是,如果这个字正过来倒过去是一样的,就先输出bu yong dao le
,然后再用输入指定的字符将其输出。
输入样例 1:
$ 9 @ @@@@@ @@@ @@@ @ @ @ @@@ @@@ @@@ @@@@@ @@@ @ @ @ @@@ @@@@@ @ @ @ @ @ @@@@@
输出样例 1:
$$$$$ $
$ $ $ $
$$$$$ $$$
$ $ $ $$$
$$$$$ $$$
$$$ $$$
$ $ $
$$$ $$$
$$$$$ $
输入样例 2:
& 3 @@@ @ @@@
输出样例 2:
bu yong dao le
&&&
&
&&&
code:
1 #include<bits/stdc++.h> 2 #include<algorithm> 3 using namespace std; 4 int main() 5 { 6 char c; 7 int n,flag; 8 string s[105],ss[105]; 9 cin>>c>>n; 10 getchar(); 11 for (int i=0;i<n;++i) 12 getline(cin,s[i]); 13 for (int i=n-1;i>=0;i--){ 14 for (string::iterator it=s[n-i-1].begin();it!=s[n-i-1].end();++it){ 15 ss[i].insert(ss[i].begin(),*it); 16 } 17 } 18 flag=0; 19 for (int i=0;i<n;++i){ 20 if (s[i]!=ss[i]){ 21 flag++; 22 break; 23 } 24 } 25 if (!flag) 26 cout<<"bu yong dao le"<<endl; 27 for (int i=0;i<n;++i){ 28 replace(ss[i].begin(),ss[i].end(),'@',c); //非常好用的函数,替换指定字符 29 cout<<ss[i]<<endl; 30 } 31 }
一次ac的水题,主要是复习一下string类的各种应用,然后推荐一个#include<algorithm>中的replace函数,他能完美替换string中的指定字符,使用也方便,当然string本身也带有replace函数。
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步