刷题链接:http://118.190.20.162/submitlist.page?gpid=T72
1.跳一跳:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int flag=0;//上一次得分
int x;
int sum=0;
cin>>x;
while(x!=0){
if(x==1){
sum+=1;
flag=1;
}
else{
if(flag==1||flag==0)
{
sum+=2;
flag=2;
}
else {
sum+=flag+2;
flag+=2;
}
}
cin>>x;
}
cout<<sum<<endl;
return 0;
}
2.碰撞的小球:本题考察思路,不限时。
#include<bits/stdc++.h>
using namespace std;
int a[110];//球的位置
int flag[110];//1向右
int l,n,t;
int weizhi[1010]={0};//标记位置
void yundong(){
memset(weizhi,0,sizeof(weizhi));
for(int i=0;i<n;i++){
a[i]+=flag[i];
if(a[i]==0||a[i]==l||weizhi[a[i]]){
flag[i]=-flag[i];
for(int j=0;j<i;j++){//用map省时间
if(a[j]==a[i])flag[j]=-flag[j];
}
}
weizhi[a[i]]=1;
}
}
int main(){
cin>>n>>l>>t;
for(int i=0;i<n;i++)
{
cin>>a[i];
flag[i]=1;
}
for(int i=1;i<=t;i++){
yundong();
}
for(int i=0;i<n;i++)cout<<a[i]<<' ';
return 0;
}
运行结果: