ZJU-2208不知错哪...请教...谢谢
ZJU-2208:我归纳了每次对输入的串的位置进行排序的规律,--
输入列数n;
输入串,以a1,a2,a3,a4....an代表;
循环i=n次,
每次循环中,第一次取(2*n-1)-2*i位置的字符,第二次取1+2*i位置的字符,把所取的字符顺序输出便是结果(没有完全证明,但是经过多次试验数据正确).但是没法AC,拜托各位赐教.
#include <iostream>
#include <stdio.h>
using namespace std;
struct str
{
char * s;
int length;
};
int main()
{
str s1;
str s2;
int i=0,q=0,m;
int k=0,j,g,c;
int n,p;
for(q=0;q<20;q++)
{
s1.length=0;
s1.s=(char*)malloc(200*sizeof(char));
s2.length=0;
s2.s=(char*)malloc(200*sizeof(char));
}
for(q=0;q<20;q++)
{
cin>>n;
if(n==0) break;
while(!scanf("%s",s1.s));
i=0;
while(s1.s!='\0')
{
s1.length++;
i++;
}
p=s1.length;
while(p%n!=0)
{
p=p+1;
s1.s='x';
s1.s='\0';
}
s1.length=p;
for(i=0;i<n;i++)
{
g=0;c=i;
s2.s=s1.s;
for(j=0;j<s1.length/n;j++)
{
g++;
if(g%2!=0)
{
k++;
c=c+((2*n-1)-2*i);
s2.s=s1.s;
}
if(g%2==0)
{
k++;
c=c+(1+2*i);
s2.s=s1.s;
}
}
}
s2.s='\0';
}
i=0;
for(m=0;m<q;m++)
{
while(s2.s!='\0')
{
cout<<s2.s;
i++;
}
cout<<endl;
}
return 0;
}
[ Last edited by Fach on 2005-6-22 at 17:03 ] #include <stdio.h>
#include <string.h>
int main()
{
int i,j,k,n,len;
char w;
freopen(\"in.txt\",\"r\",stdin);
freopen(\"out.txt\",\"w\",stdout);
while(1)
{
scanf(\"%d\",&n);
if (n==0) break;
scanf(\"%s\",w);
len=strlen(w);
for (i=0;i<n;i++)
{
j=i+1;
while(j<=len)
{
printf(\"%c\",w);
j=j+(n+n-i-i-1);
if (j>len) break;
printf(\"%c\",w);
j=j+i+i+1;
}
}
printf(\"\\n\");
}
return 0;
} 我贴了代码,你可以这样.你自己随便建立一些测试数据.然后对比两个程序的运行结果.错误的进行跟踪,查找错误的代码
用freopen 函数帮助调试 好办法!
页:
[1]