B题 碰撞的小球
简单模拟题。具体思路详见注释。node
#include <bits/stdc++.h> using namespace std; struct node { int pos,d;//球的位置,方向 }a[110]; int n,t,l,tmp; int main() { ios::sync_with_stdio(false); cin>>n>>l>>t; for(int i=1;i<=n;i++) { cin>>a[i].pos; a[i].d=1;//初始方向均向右,每秒位置加上d(d只能等于1或-1) } for(int i=1;i<=t;i++)//遍历时间 { for(int j=1;j<=n;j++)//遍历单个小球,处理碰墙状况 { tmp=a[j].pos+a[j].d; if(tmp==l||tmp==0){ a[j].pos=tmp;a[j].d=(-a[j].d);}//碰到墙,反向 else a[j].pos+=a[j].d;//未碰墙,按原方向移动一个单位长度 } for(int j=1;j<=n;j++)//遍历寻找两个相同位置的小球,处理两球相撞状况 for(int k=j+1;k<=n;k++) { if(a[j].pos==a[k].pos)//两球相撞,两球均反向 { a[j].d=(-a[j].d); a[k].d=(-a[k].d); } } } for(int i=1;i<=n;i++) i==n?printf("%d\n",a[i].pos):printf("%d ",a[i].pos); return 0; }
D题 消除类游戏
数据很小,直接暴力。ios
100分 AC代码:c++
#include <cstdio> #include <iostream> using namespace std; bool vis[40][40]; int n,m,x1,x2,y1,y2,tmp,a[40][40]; int main() { ios::sync_with_stdio(false); cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { tmp=0;x1=x2=i;//记得初始化x一、x2(x一、x2为竖行能够消去的区间) for(int k=i;k<=n;k++) { if(a[k][j]==a[i][j]){ x2=k;tmp++;} else break; } for(int k=i-1;k>=1;k--) { if(a[k][j]==a[i][j]){ x1=k;tmp++;} else break; } if(tmp>=3) { for(int k=x1;k<=x2;k++) vis[k][j]=1; } tmp=0;y1=y2=j;//记得初始化y一、y2(y一、y2为横行能够消去的区间) for(int k=j;k<=m;k++) { if(a[i][k]==a[i][j]){ y2=k;tmp++;} else break; } for(int k=j-1;k>=1;k--) { if(a[i][k]==a[i][j]){ y1=k;tmp++;} else break; } if(tmp>=3) { for(int k=y1;k<=y2;k++) vis[i][k]=1; } } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { if(vis[i][j]==1)a[i][j]=0; j==m?printf("%d\n",a[i][j]):printf("%d ",a[i][j]); } return 0; }
A题 跳一跳
100分 AC代码:web
#include <bits/stdc++.h> using namespace std; int opt,x,ans; int main() { ios::sync_with_stdio(false); x=1;ans=0; while(cin>>opt&&opt) { if(opt==1)x=1; else { if(x==1)x=2; else x+=2; } ans+=x; } printf("%d\n",ans); return 0; }
C题 数位之和
100分 AC代码:svg
#include <bits/stdc++.h> using namespace std; int n,d,ans; int main() { ios::sync_with_stdio(false); cin>>n; while(n) { d=n%10; ans+=d; n=n/10; } printf("%d\n",ans); return 0; }
本文同步分享在 博客"nefu_ljw"(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。url