| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
关于定义的数组名问题以下两段代码,第1段可以过,第2段是把数组vi[N]与st[N]的名字改成v[N]与s[N],就总RE,有没有人知道怎么回事?
1.
#include<iostream>
#include<queue>
#define N 100001
using namespace std;
queue<int> x;
bool vi[N];
int st[N];
int bfs(int n,int k)
{
int head,next;
x.push(n);
vi[n]=true;
st[n]=0;
while(!x.empty())
{
head=x.front();
x.pop();
for(int i=0;i<3;i++)
{
if(i==0) next=head-1;
else if(i==1) next=head+1;
else next=head*2;
if( next>N || next<0) continue;
if(!vi[next])
{
x.push(next);st[next]=st[head]+1;
vi[next]=true;
}
if(next==k) return st[next];
}
}
}
int main()
{
int n,k;
scanf("%d%d",&n,&k);
if(n>=k) printf("%d\n",n-k);
else
{
printf("%d\n",bfs(n,k));
}
return 0;
}
2.
#include<iostream>
#include<queue>
#define N 100001
using namespace std;
queue<int> x;
bool v[N];
int s[N];
int bfs(int n,int k)
{
int head,next;
x.push(n);
v[n]=true;
s[n]=0;
while(!x.empty())
{
head=x.front();
x.pop();
for(int i=0;i<3;i++)
{
if(i==0) next=head-1;
else if(i==1) next=head+1;
else next=head*2;
if( next>N || next<0) continue;
if(!v[next])
{
x.push(next);s[next]=s[head]+1;
v[next]=true;
}
if(next==k) return s[next];
}
}
}
int main()
{
int n,k;
scanf("%d%d",&n,&k);
if(n>=k) printf("%d\n",n-k);
else
{
printf("%d\n",bfs(n,k));
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator