在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
7-1 Good in C (20分)
When your interviewer asks you to write "Hello World" using C, can you do as the following figure shows? Input Specification:Each input file contains one test case. For each case, the first part gives the 26 capital English letters A-Z, each in a 7 matrix of It is guaranteed that there is at least one word given. Output Specification:For each word, print the matrix form of each of its letters in a line, and the letters must be separated by exactly one column of space. There must be no extra space at the beginning or the end of the word. Between two adjacent words, there must be a single empty line to separate them. There must be no extra line at the beginning or the end of the output. Sample Input:
Sample Output:
题意: 给你26个字母的7*5的图案,然后给出一串包含大写字母的句子,把里面的大写字母打印出来,每个单词一行,单词内的字母间空一列,行前行末没有多余的空行和空格。 题解: 乍一眼看就觉得挺麻烦的就先跳过。之后做了很久很久,提交了无数次。。。 我先是把要打印的图案忽略空行,先统一放在ans这个二维数组里,最后打印这个二维数组。 那么将图案写入ans中时,如下图,要注意cc和rr的变化,没打印一个字母,rr+=6,同时打印一列空行。遇到了非大写字母的符号(注意:多个非大写字母符号要看做一个),那就rr=1,cc+=7,同时一开始我只拿了13分,中间的三个测试点就过不了,原因可能是输入的字符串可能包含空格,还可能因为没有记录每个大行(col)最多打印多少列,每个大行都是不一样的,要记录下来,然后注意一些小细节。这题我最后才过的,当时开心地哇了一声~终于考完,100分啦,还惊到了旁边的同学。。。hhh AC代码:
#include<bits/stdc++.h> using namespace std; char zm[30][15][15]; string s; char ans[10000][10000]; int rnum[505]; int main(){ for(int i=1;i<=26;i++){//存入zm中 for(int j=1;j<=7;j++){ for(int k=1;k<=5;k++){ cin>>zm[i][j][k]; } } } getchar(); getline(cin,s);//输入的字符串可能会包含空格 int l=s.length(); int col=1,cc=1; int rr=1; int f=0;//连续几个非大写字母的符号看作一个符号 for(int i=0;i<l;i++){ if(s[i]>='A'&&s[i]<='Z'){ int lett=s[i]-'A'+1; f=1; for(int j=1;j<=7;j++){//打印一个字母到ans for(int k=1;k<=5;k++){ ans[cc+j-1][rr+k-1]=zm[lett][j][k]; rnum[col]=max(rnum[col],rr+k-1);//用于记录每一大行最长有多长 } } rr+=6;//每打印一个字母在字母后面打印一个空行 for(int j=1;j<=7;j++){ ans[cc+j-1][rr-1]=' '; } }else{ if(f==1) {//如果符号之后又出出现过大写字母了 cc+=7;//行数+7 col++;//大行数+1 rr=1; } f=0; } } if(f==0) col--;//最后一个符号不需要再多一行 for(int i=1;i<=col*7;i++){ for(int j=1;j<=rnum[(i-1)/7+1];j++){ cout<<ans[i][j]; } if(i!=col*7) cout<<endl;//行末无空格 if(i%7==0&&i!=col*7) cout<<endl;//没打印7行空一行 } return 0; }
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论