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

Re:为什么用指针就可以对,用变量模拟指针就会WA呢?

Posted by litble at 2017-08-14 21:32:54 on Problem 1635
In Reply To:为什么用指针就可以对,用变量模拟指针就会WA呢? Posted by:litble at 2017-08-14 21:23:24
> 诚恳地求大神帮助,感激不尽!QAQ
> 我是用hash实现本题的,但是一直都WA,于是我找了别人的代码来看,这样就可以AC:
> #include<algorithm>
> #include<iostream>
> #include<cstring>
> #include<climits>
> #include<cstdio>
> using namespace std;
> int T,t;
> char s[2][3100],l1,l2;
> char *p;
> int h1,h2,hx[11000];
> int has(int dep){
> 	int re=hx[dep+5000];
> 	while(*p&&*p++=='0')//指针模拟,实现递归
> 		re=(re+hx[dep]*has(dep+1))%19001;//计算每棵子树的hash值
> 	return re*re%19001;
> }
> void init(){for(int i=0;i<=10000;++i)hx[i]=rand()%19901;}//随机一些hash种子
> int main()
> {
>     scanf("%d",&T);init();
>     while(T--){
>     	scanf("%s%s",s[0],s[1]);
>     	p=s[0];h1=has(1);p=s[1];h2=has(1);
>     	if(h1==h2)puts("same");
>     	else puts("different");
>     }
>     return 0;
> }
> 我原来的WA代码是这么写的:
> #include<algorithm>
> #include<iostream>
> #include<cstring>
> #include<climits>
> #include<cstdio>
> using namespace std;
> int T,t;
> char s[2][3100],l1,l2;
> int h1,h2,hx[11000];
> int has(int x,int dep,int l){
> 	int re=hx[dep+5000];
> 	while(t<l&&s[x][t++]=='0')//用全局变量t实现移动,只有这里和上一份代码不同
> 		re=(re+hx[dep]*has(x,dep+1,l))%19001;
> 	return re*re%19001;
> }
> void init(){for(int i=0;i<=10000;++i)hx[i]=rand()%19901;}
> int main()
> {
>     init();
>     scanf("%d",&T);
>     while(T--){
>     	scanf("%s%s",s[0],s[1]);
>     	l1=strlen(s[0]),l2=strlen(s[1]);
>     	t=0,h1=has(0,1,l1),t=0,h2=has(1,1,l2);
>     	if(h1==h2)puts("same");
>     	else puts("different");
>     }
>     return 0;
> }
对了,我WA的那份代码那个位置改成这样就可以过了:
while(s[x][t++]=='0')
		re=(re+hx[dep]*has(x,dep+1))%19001;

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