HDOJ1200 To and Fro

本文提供了一种解决HDU ACM 1200号问题的算法思路及C语言实现代码。该问题涉及字符串处理,通过特定方式读取并重新组织输入的字符,最终输出重构后的字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1200

 

AC代码:

#include<stdio.h> #include<string.h> int main(){ int c,len,i,j,k,row,count,flag; char s1[201],p[21][201],s2[201]; while(scanf("%d",&c)!=EOF){ //c表示列数; getchar();//接受回车符; if(c==0){ break; } gets(s1); len=strlen(s1); i=0; row=0;//行数; while(i<len){//每次读取2行; j=0;//控制每一行5个字符; while(i<len&&j<c){//读取5个字符; p[row][j]=s1[i]; i++; j++; } row++; j=0; while(i<len&&j<c){//读取5个字符; p[row][c-1-j]=s1[i]; i++; j++; } row++; } if(len%c==0){ row=len/c;//行数; } else{ row=len/c+1; } if(len%c==0){ count=0;//需填充的字符个数; } else{ count=c-len%c; } if(row%2==1){//填充字符从右往左; k=0; for(i=0;i<c-count;i++){ for(j=0;j<row;j++){ s2[k++]=p[j][i]; } } for(i=c-count;i<c;i++){ for(j=0;j<row-1;j++){ s2[k++]=p[j][i]; } } for(i=0;i<len;i++){ printf("%c",s2[i]); } } else{//填充字符从右往左; k=0; for(i=0;i<count;i++){ for(j=0;j<row-1;j++){ s2[k++]=p[j][i]; } } for(i=count;i<row;i++){ for(j=0;j<row;j++){ s2[k++]=p[j][i]; } } for(i=0;i<len;i++){ printf("%c",s2[i]); } } printf("/n"); } }

转载于:https://www.cnblogs.com/xiajun/archive/2011/03/20/2298666.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值