读书人

一个简单的acm题格式异常了

发布时间: 2012-04-07 17:31:51 作者: rapoo

一个简单的acm题,格式错误了
将一个较短的字符串的字符交叉地插入到另一个较长的字符串中,每个字符以一定的间隔插入。该间隔=(长字符串长度/短字符串),即对两个字符串长度相除取整。例如:如果两个字符串等长(字符插入间隔=1),就将后输入的串的字符每隔一个字符插入先输入的串当中;被插入的字符串长度为12,待插入的字符串的长度为5,那么字符插入间隔为2,以此类推。请参考Sample Input和Sample Output。
Input
只有一组测试数据,两个字符串(它们的长度不会超过100)。
Output
输出1行信息,即插入后的新串。
Sample Input
ABCDEFG abcdefg
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghi
Sample Output
AaBbCcDdEeFfGg
ABaCDbEFcGHdIJeKLfMNgOPhQRiSTUVWXYZ
Hint
注意输入的字符串中第一个字符串长度未必比第二个长。




我的代码如下:

#include "stdio.h"
#include<string.h>
int main()
{
int i,k,n,x;
char a[100],b[100];
scanf("%s%s",&a,&b);
k=strlen(a)/strlen(b)>strlen(b)/strlen(a)?strlen(a)/strlen(b):strlen(b)/strlen(a);
//求出长数组除以短数组的值
n=strlen(a)>strlen(b)?strlen(a):strlen(b);
//求出谁是长数组
if(strlen(a)>=strlen(b))//如果a是长数组
{
for(i=0;i<n;i++)
{
printf("%c",a[i]);
if((i+1)%k==0)
{
x=(i+1)/k-1;
printf("%c",b[x]);//每输出一个a数组间隔(X+1)/k-1个b数组
}
}
}
else//如果b是长数组
{
for(i=0;i<n;i++)
{
printf("%c",b[i]);
if((i+1)%k==0)
{
x=(i+1)/k-1;
printf("%c",a[x]);
}
}
}
return 0;
}

求高手解答,格式哪儿错了!,问题是可能很快就知道我没有换行,但是我一旦换行,就会是wrong answer!拜托了!

[解决办法]
你这个只能进行一次输入输出,题目要求多次。。。
[解决办法]
你输入的时候只能用空格分隔两个字符串,因为scanf就是这么傻傻的函数。
另外,程序里你忘了限制输出短串结束后的内容,会导致结果很奇怪。
更正后代码如下:

C/C++ code
#include "stdio.h"#include<string.h>int main(){    int i,k,n,x;    int al,bl;          /*增加字符串长度变量,用于存储字符串的长度,简化计算。*/    char a[100],b[100];    scanf("%s%s",&a,&b);    al=strlen(a);    bl=strlen(b);    k=al>bl?al/bl:bl/al;    /*这里看起来就更清楚了*/    //求出长数组除以短数组的值    /*n=strlen(a)>strlen(b)?strlen(a):strlen(b);*/    //求出谁是长数组    if(al>=bl)//如果a是长数组    {        for(i=0;i<al;i++)   /*n是没必要的了*/        {            printf("%c",a[i]);            if((i+1)%k==0)            {                x=(i+1)/k-1;                if (x<bl)       /*这里是为了避免在b输出完之后仍继续取b成员*/                    printf("%c",b[x]);//每输出一个a数组间隔(X+1)/k-1个b数组            }        }    }    else//如果b是长数组    {        for(i=0;i<bl;i++)        {            printf("%c",b[i]);            if((i+1)%k==0)            {                x=(i+1)/k-1;                if (x<al)                    printf("%c",a[x]);            }           }    }    return 0;} 

读书人网 >C++

热点推荐