Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

碰见字符的就发愁 wa了一下午,本人新手下面的代码很乱。。。不知道哪里错了。

Posted by dakecaoxin at 2009-09-15 14:38:40 on Problem 1026
题目给的两个数据都输出正确。包括前面后面的空格,模块间回车。算法是用周期求模,可能会超时,不过老是wa。
#include<iostream>
using namespace std;
int main()
{
	int a[500];//记录序列

	int lis[500]={0};//记录模的大小
	int alis[500]={0};//求模之后需要变化的次数
	char ch[500]={' '};//记录输入
	char last[500]={' '};//对输入加密后
	char last2[500]={' '};
	int n;
	int t;
	int m;
	int e=1;

	cin>>n;
while(n!=0){
	for(int ii=1;ii<=n;ii++)
	{
		cin>>a[ii];
	}

	cin>>m;
	getchar();//吸收一个空格
	for(int j=1;j<=n;j++)
	{
		t=a[j];
		while(1)
		{
			
			if(a[j]==a[t]){lis[j]++; break;}
			else t=a[t];
			
			lis[j]++;
		}
	}
while(m!=0)
{	
	for(int d=1;d<=n;d++)
	{
		alis[d]=m%lis[d];//记录求模

	}

	while((ch[e]=getchar())!='\n')e++;
	ch[e]=' ';//getchar()会把回车读入,所以用空格改之
	for(int b=1;b<=n;b++)
	{
		int k=b;
		for( int j=0,w=b;j<alis[b];j++)
		{
				k=a[w];
				w=k;
		}
		last[k]=ch[b];

	}

	for(int ww=1;ww<=n;ww++){last2[ww-1]=last[ww];}last2[n]=0;
	puts(last2);//反正putchar 和puts都用了 就是wa啊
	
	cin>>m;
	getchar();
	
	for(int bb=1;bb<=n;bb++)
	{
		last[bb]=' ';
		ch[bb]=' ';
		e=1;
		alis[bb]=0;
	}
}




for(int iii=1;iii<=n;iii++)
	{
		lis[iii]=0;
	}
cout<<endl;//模块间回车
cin>>n;
}	
    return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator