第 5 课
奇怪的电梯(lift)
1360:奇怪的电梯(lift)03
#include
using namespace std;
int que[300][2];
int num[210];
int main( void )
{
int n,a,b;
int head,tail;
int tempx,tempy,nx;
int flag[210];
cin>>n>>a>>b;
for(int
i=1;i<=n;++i)
{
cin>>num[i];
}
if( a==b )
{
cout<<0<
return 0;
}
head=0;
tail=1;
que[tail][0]=a;
que[tail][1]=0;//step
while(head!=tail)
{
++head;
tempx=que[head][0];
tempy=que[head][1];
for(int
i=-1;i<=1;++i)
{
if( i!=0 )
{
nx=tempx+num[tempx]*i;
if(nx>n || nx<1 ||
flag[nx]) continue;
if(nx ==b )
{
cout<
return 0;
}
++tail;
que[tail][0]=nx;
que[tail][1]=0;
flag[nx]=true;
}
}
}
cout<
return 0;
}
1360:奇怪的电梯(lift)03
P1135 奇怪的电梯(支扬帆)
#include
#include
using namespace std;
int k[210], n, a, b;
int minx = INT_MAX,
book[210];
void dfs(int step, int
cnt);
int main()
{
cin >> n >> a
>> b;
for (int i = 1; i <= n;
i++)
cin >> k[i];
book[a] = 1;
dfs(a, 0);
if (minx == INT_MAX)
cout << -1;
else
cout << minx;
return 0;
}
void dfs(int step, int
cnt)
{
if (step == b)
minx = minx > cnt ? cnt :
minx;
if (cnt > minx)
return;
book[step] = 1;
if (step + k[step] <= n
&& book[step + k[step]] == 0)
dfs(step + k[step], cnt +
1);
if (step - k[step] >= 1
&& book[step - k[step]] == 0)
dfs(step - k[step], cnt +
1);
book[step] = 0;
}
#include
using namespace std;
const int maxn=202;
bool flag[maxn];
int
n,a,b,take,put,x,y,nx,num[maxn],que[maxn][2];
int main( void )
{
cin>>n>>a>>b;
for(int
i=1;i<=n;++i)
{
cin>>num[i];
}
if( a== b )
{
cout<
return 0;
}
take=0,put=1;
//入队
que[put][0]=a;
que[put][1]=0;
while( take!=put)
{
++take;
//出队
x=que[take][0];
//按键次数
y=que[take][1];
//flag[a]=true;
for(int
i=-1;i<=1;++i)
{
if(i!=0)
{
nx=x+num[x]*i;
if( nx>n || nx<1 ||
flag[nx])
{
continue;
}
if( nx==b)
{
cout<
return 0;
}
++put;
que[put][0]=nx;
que[put][1]=y+1;
flag[nx]=true;
}
}
}
cout<
return 0;
}
1360:奇怪的电梯(lift)02
http://ybt.ssoier.cn:8088/problem_show.php?pid=1360
#include
using namespace std;
#include
#include
#include
int n,a,b,t;
int ans=0x7f;
int edge[201][201];
int f[201][201];
int main()
{
cin>>n>>a>>b;
memset(edge,0x7f/2,sizeof(edge));
memset(f,0x7f/2,sizeof(f));
for (int i=1; i<=n;
i++)
{
f[i][i]=0;
cin>>t;
if
(i+t<=n)
{
edge[i][i+t]=1;
f[i][i+t]=edge[i][i+t];
}
if (i-t>=1)
{
edge[i][i-t]=1;
f[i][i-t]=edge[i][i-t];
}
}
for (int k=1; k<=n;
k++)
for
(int i=1; i<=n; i++)
if
(i!=k)
for
(int j=1; j<=n; j++)
if
(i!=j&&j!=k)
{
f[i][j]=min(f[i][j],f[i][k]+f[k][j]);
}
if (f[a][b]!=f[0][0])
cout<
else cout<
}
中国油画美人50幅,真美!
沙孟海:我的书法经历和体会
他曾获第五届兰亭奖,小楷温文尔雅,取法墓志,笔法精巧,羡慕
他被称为美国最伟大的画家,一幅趴着的女孩,几乎没人不知道
书法无需藏锋露锋?
此楷书既有欧体的险劲,又有二王的妍美!
董其昌行草书法长卷《谢惠连雪赋》,笔法细腻,结体舒朗!
华裔画家年仅23岁,画完31幅画后,他自杀了
老机器集体中招!停止更新后Windows7出现大面积蓝屏
董其昌《酒德颂》