当前位置:Gxlcms > mysql > Google2015校园招聘在线笔试题2

Google2015校园招聘在线笔试题2

时间:2021-07-01 10:21:17 帮助过:36人阅读

下午去打了个酱油,就做出一道最简单的题,2048游戏,实在是太菜了,马上要找工作了,复习的不到位啊! 解法: k记录要被放置的位置索引 1.k位置元素是0,将e[i]移到e[k] 2.k位置非零: (1)e[i]==e[k]相同,碰撞,e[k]×=2,k移到下一个位置(k或--k) (2

下午去打了个酱油,就做出一道最简单的题,2048游戏,实在是太菜了,马上要找工作了,复习的不到位啊!


解法:

k记录要被放置的位置索引
1.k位置元素是0,将e[i]移到e[k]
2.k位置非零:
(1)e[i]==e[k]相同,碰撞,e[k]×=2,k移到下一个位置(++k或--k)
(2)e[i]!=e[k]不同,k移到下一个位置(++k或--k),将e[i]移到e[k]

复杂度O(n^2),代码有点乱,没整理,如下:

  1. #include <iostream>
  2. #include <string>
  3. inline void arrayMove(short (*val)[21],int n,std::string&dir){
  4. if(dir=="up"){
  5. for(int j=0;j<n;++j){ int="" k="0;" for(int="" i="1;i<=n-1;++i){" if(0="=val[i][j])" continue;="" val[k][j]="val[i][j];" val[i][j]="0;" }else="" if(val[i][j]="=val[k][j]){" ++k;="" }else{="" if(k!="i){" }="" if(dir="="down"){" j="0;j<n;++j){">=0;--i){
  6. if(0==val[i][j])
  7. continue;
  8. if(0==val[k][j]){
  9. val[k][j]=val[i][j];
  10. val[i][j]=0;
  11. }else if(val[i][j]==val[k][j]){
  12. val[k][j]=val[i][j]<<1;
  13. val[i][j]=0;
  14. --k;
  15. }else{
  16. --k;
  17. if(k!=i){
  18. val[k][j]=val[i][j];
  19. val[i][j]=0;
  20. }
  21. }
  22. }
  23. }
  24. }else if(dir=="left"){
  25. for(int i=0;i<=n-1;++i){
  26. int k=0;
  27. for(int j=1;j<n;++j){ if(0="=val[i][j])" continue;="" val[i][k]="val[i][j];" val[i][j]="0;" }else="" if(val[i][j]="=val[i][k]){" ++k;="" }else{="" if(k!="j){" }="" if(dir="="right"){" for(int="" i="0;i<=n-1;++i){" int="" k="n-1;" j="n-2;j">=0;--j){
  28. if(0==val[i][j])
  29. continue;
  30. if(0==val[i][k]){
  31. val[i][k]=val[i][j];
  32. val[i][j]=0;
  33. }else if(val[i][j]==val[i][k]){
  34. val[i][k]=val[i][j]<<1;
  35. val[i][j]=0;
  36. --k;
  37. }else{
  38. --k;
  39. if(k!=j){
  40. val[i][k]=val[i][j];
  41. val[i][j]=0;
  42. }
  43. }
  44. }
  45. }
  46. }
  47. }
  48. int main(int argc,char**argv){
  49. int T=0;
  50. int N=0;
  51. int i=0;
  52. short (*val)[21]=new short[21][21];
  53. std::string dir;
  54. std::cin>>T;
  55. while(++i<=T){
  56. std::cin>>N;
  57. std::cin>>dir;
  58. for(int j=0;j<n;++j) for(int="" k="0;k<N;++k)" std::cin="">>val[j][k];
  59. arrayMove(val,N,dir);
  60. std::cout<<"Case #"<<i<<":"<<std::endl; for(int="" j="0;j<N;++j){" std::cout<<val[j][0];="" k="1;k<N;++k)" std::cout<<"="" "<<val[j][k];="" std::cout<<std::endl;="" }="" <="" script=""></i<<":"<<std::endl;></n;++j)></n;++j){></n;++j){></string></iostream>

人气教程排行