Home
Problem
Status
Contest
Workbook
User
Group
Forum
Register
Login
{"managingGroups":{},"author":"zy2008","updateTime":1714637848000,"title":"2048","dislikeCnt":0,"content":"```\n#include\u003cbits/stdc++.h\u003e\n#include \u003cconio.h\u003e\n#include \u003cwindows.h\u003e\nusing namespace std;\nint s[4][4]\u003d {0},yc[5],win\u003d0,s1[4][4]\u003d {0};\nbool flag\u003d0,re\u003d0,co\u003d0;\nenum eDirection { STOP \u003d 0, LEFT, RIGHT, UP, DOWN };\neDirection dir;\nvoid Input() {\n if (_kbhit()) {\n switch (_getch()) {\n case \u0027a\u0027:\n flag\u003d1;\n dir \u003d LEFT;\n break;\n case \u0027d\u0027:\n flag\u003d1;\n dir \u003d RIGHT;\n break;\n case \u0027w\u0027:\n flag\u003d1;\n dir \u003d UP;\n break;\n case \u0027s\u0027:\n flag\u003d1;\n dir \u003d DOWN;\n break;\n case \u0027x\u0027:\n flag\u003d1;\n co\u003d1;\n break;\n case \u0027r\u0027:\n flag\u003d1;\n re\u003d1;\n break;\n }\n }\n}\nbool check1() {\n bool f\u003d0;\n for(int i\u003d0; i\u003c4; i++)\n for(int j\u003d0; j\u003c4; j++) {\n if(i-1\u003e\u003d0) {\n if(s[i-1][j]\u003d\u003ds[i][j])\n f\u003d1;\n }\n if(j-1\u003e\u003d0) {\n if(s[i][j-1]\u003d\u003ds[i][j])\n f\u003d1;\n }\n if(s[i][j]\u003d\u003d0)\n f\u003d1;\n }\n return f;\n}\nbool check() {\n bool f\u003d0;\n for(int i\u003d0; i\u003c4; i++)\n for(int j\u003d0; j\u003c4; j++)\n if(s1[i][j]!\u003ds[i][j])\n f\u003d1;\n return f;\n}\nint main() {\n srand(time(0));\n for(int i\u003d1; i\u003c\u003d2; i++) {\n int nx\u003drand()%4,ny\u003drand()%4;\n if(s[nx][ny]) i--;\n else {\n int a\u003drand()%2+1;\n s[nx][ny]\u003d2*a;\n }\n }\n cout\u003c\u003c\u0027 \u0027;\n for(int i\u003d1; i\u003c\u003d4; i++)\n cout\u003c\u003c\"--\";\n for(int i\u003d0; i\u003c4; i++) {\n cout\u003c\u003cendl\u003c\u003c\"|\";\n for(int g\u003d0; g\u003c5; g++) yc[g]\u003d-1;\n for(int j\u003d0; j\u003c4; j++) {\n if(i\u003c3\u0026\u0026s[i+1][j]) yc[j]\u003dj;\n if(i\u003c3\u0026\u0026s[i][j]) yc[j]\u003dj;\n if(j\u003c3\u0026\u0026s[i][j]) cout\u003c\u003cs[i][j]\u003c\u003c\"|\";\n if(j\u003c3\u0026\u0026s[i][j]\u003d\u003d0\u0026\u0026s[i][j+1]) cout\u003c\u003c\" |\";\n if(s[i][j]\u003d\u003d0\u0026\u0026j\u003c3\u0026\u0026s[i][j+1]\u003d\u003d0) cout\u003c\u003c\" \";\n if(j\u003d\u003d3) {\n if(s[i][j]\u003d\u003d0) cout\u003c\u003c\" |\";\n else cout\u003c\u003cs[i][j]\u003c\u003c\"|\";\n }\n }\n cout\u003c\u003cendl\u003c\u003c\" \";\n if(i\u003c3) {\n for(int l\u003d0; l\u003c4; l++) {\n if(l\u003d\u003dyc[l]) cout\u003c\u003c\"- \";\n else cout\u003c\u003c\" \";\n }\n }\n }\n for(int i\u003d1; i\u003c\u003d4; i++)\n cout\u003c\u003c\"--\";\n cout\u003c\u003cendl\u003c\u003c\"Start!\"\u003c\u003cendl;\n while(1) {\n co\u003d0;\n flag\u003d0;\n re\u003d0;\n Input();\n int maxn\u003d0,len\u003d0;\n for(int i\u003d0; i\u003c4; i++)\n for(int j\u003d0; j\u003c4; j++)\n s1[i][j]\u003ds[i][j];\n if(dir\u003d\u003dLEFT\u0026\u0026flag\u003d\u003d1) {\n for(int i\u003d0; i\u003c4; i++)\n for(int j\u003d0; j\u003c4; j++)\n if(s[i][j]!\u003d0)\n for(int l\u003d1; l\u003c\u003d3-j; l++) {\n if(s[i][j+l]!\u003d0\u0026\u0026s[i][j+l]!\u003ds[i][j]) break;\n if(s[i][j+l]\u003d\u003d0) continue;\n if(s[i][j+l]!\u003d0\u0026\u0026s[i][j+l]\u003d\u003ds[i][j]) {\n s[i][j]*\u003d2;\n s[i][j+l]\u003d0;\n break;\n }\n }\n for(int i\u003d0; i\u003c4; i++)\n for(int j\u003d0; j\u003c4; j++)\n if(s[i][j]\u003d\u003d0)\n for(int l\u003d1; l\u003c\u003d3-j; l++)\n if(s[i][j+l]) {\n s[i][j]\u003ds[i][j+l];\n s[i][j+l]\u003d0;\n break;\n }\n }\n if(dir\u003d\u003dUP\u0026\u0026flag\u003d\u003d1) {\n for(int i\u003d0; i\u003c4; i++)\n for(int j\u003d0; j\u003c4; j++)\n if(s[j][i]!\u003d0)\n for(int l\u003d1; l\u003c\u003d3-j; l++) {\n if(s[j+l][i]!\u003d0\u0026\u0026s[j+l][i]!\u003ds[j][i]) break;\n if(s[j+l][i]\u003d\u003d0) continue;\n if(s[j+l][i]!\u003d0\u0026\u0026s[j+l][i]\u003d\u003ds[j][i]) {\n s[j][i]*\u003d2;\n s[j+l][i]\u003d0;\n break;\n }\n }\n for(int i\u003d0; i\u003c4; i++)\n for(int j\u003d0; j\u003c4; j++)\n if(s[j][i]\u003d\u003d0)\n for(int l\u003d1; l\u003c\u003d3-j; l++)\n if(s[j+l][i]) {\n s[j][i]\u003ds[j+l][i];\n s[j+l][i]\u003d0;\n break;\n }\n }\n if(dir\u003d\u003dDOWN\u0026\u0026flag\u003d\u003d1) {\n for(int i\u003d3; i\u003e\u003d0; i--)\n for(int j\u003d3; j\u003e\u003d0; j--)\n if(s[j][i]!\u003d0)\n for(int l\u003d1; l\u003c\u003dj; l++) {\n if(s[j-l][i]!\u003d0\u0026\u0026s[j-l][i]!\u003ds[j][i]) break;\n if(s[j-l][i]\u003d\u003d0) continue;\n if(s[j-l][i]!\u003d0\u0026\u0026s[j-l][i]\u003d\u003ds[j][i]) {\n s[j][i]*\u003d2;\n s[j-l][i]\u003d0;\n break;\n }\n }\n for(int i\u003d3; i\u003e\u003d0; i--)\n for(int j\u003d3; j\u003e\u003d0; j--)\n if(s[j][i]\u003d\u003d0)\n for(int l\u003d1; l\u003c\u003dj; l++)\n if(s[j-l][i]) {\n s[j][i]\u003ds[j-l][i];\n s[j-l][i]\u003d0;\n break;\n }\n }\n if(dir\u003d\u003dRIGHT\u0026\u0026flag\u003d\u003d1) {\n for(int i\u003d3; i\u003e\u003d0; i--)\n for(int j\u003d3; j\u003e\u003d0; j--)\n if(s[i][j]!\u003d0)\n for(int l\u003d1; l\u003c\u003dj; l++) {\n if(s[i][j-l]!\u003d0\u0026\u0026s[i][j-l]!\u003ds[i][j]) break;\n if(s[i][j-l]\u003d\u003d0) continue;\n if(s[i][j-l]!\u003d0\u0026\u0026s[i][j-l]\u003d\u003ds[i][j]) {\n s[i][j]*\u003d2;\n s[i][j-l]\u003d0;\n break;\n }\n }\n for(int i\u003d3; i\u003e\u003d0; i--)\n for(int j\u003d3; j\u003e\u003d0; j--)\n if(s[i][j]\u003d\u003d0)\n for(int l\u003d1; l\u003c\u003dj; l++)\n if(s[i][j-l]) {\n s[i][j]\u003ds[i][j-l];\n s[i][j-l]\u003d0;\n break;\n }\n }\n if(re\u003d\u003d1\u0026\u0026flag\u003d\u003d1\u0026\u0026(win\u003d\u003d2||check1()\u003d\u003d0)) {\n for(int i\u003d0; i\u003c\u003d4; i++)\n for(int j\u003d0; j\u003c4; j++)\n s[i][j]\u003d0;\n int nx1\u003drand()%4,ny1\u003drand()%4;\n int a1\u003drand()%2+1;\n s[nx1][ny1]\u003d2*a1;\n }\n if(flag\u003d\u003d1) {\n for(int i\u003d0; i\u003c4; i++)\n for(int j\u003d0; j\u003c4; j++)\n if(s[i][j]\u003emaxn)\n maxn\u003ds[i][j];\n if(maxn\u003d\u003d2048) {\n win\u003d1;\n }\n int xx\u003dmaxn;\n while(xx) {\n xx/\u003d10;\n len++;\n }\n if(check()\u003d\u003d1) {\n for(int i\u003d1; i\u003c\u003d1; i++) {\n int x\u003drand()%4,y\u003drand()%4;\n if(s[x][y]) i--;\n else {\n int b\u003drand()%2+1;\n s[x][y]\u003d2*b;\n }\n }\n }\n if(len\u003d\u003d1) {\n system(\"cls\");\n cout\u003c\u003c\u0027 \u0027;\n for(int i\u003d1; i\u003c\u003d4; i++)\n cout\u003c\u003c\"--\";\n for(int i\u003d0; i\u003c4; i++) {\n cout\u003c\u003cendl\u003c\u003c\"|\";\n for(int g\u003d0; g\u003c5; g++) yc[g]\u003d-1;\n for(int j\u003d0; j\u003c4; j++) {\n if(i\u003c3\u0026\u0026s[i+1][j]) yc[j]\u003dj;\n if(i\u003c3\u0026\u0026s[i][j]) yc[j]\u003dj;\n if(j\u003c3\u0026\u0026s[i][j]) cout\u003c\u003cs[i][j]\u003c\u003c\"|\";\n if(j\u003c3\u0026\u0026s[i][j]\u003d\u003d0\u0026\u0026s[i][j+1]) cout\u003c\u003c\" |\";\n if(s[i][j]\u003d\u003d0\u0026\u0026j\u003c3\u0026\u0026s[i][j+1]\u003d\u003d0) cout\u003c\u003c\" \";\n if(j\u003d\u003d3) {\n if(s[i][j]\u003d\u003d0) cout\u003c\u003c\" |\";\n else cout\u003c\u003cs[i][j]\u003c\u003c\"|\";\n }\n }\n cout\u003c\u003cendl\u003c\u003c\" \";\n if(i\u003c3) {\n for(int l\u003d0; l\u003c4; l++) {\n if(l\u003d\u003dyc[l]) cout\u003c\u003c\"- \";\n else cout\u003c\u003c\" \";\n }\n }\n }\n for(int i\u003d1; i\u003c\u003d4; i++)\n cout\u003c\u003c\"--\";\n if(check1()\u003d\u003d0) {\n cout\u003c\u003cendl\u003c\u003c\"Game Over!\"\u003c\u003cendl\u003c\u003c\"Score:\"\u003c\u003cmaxn\u003c\u003cendl;\n cout\u003c\u003c\"Click r to restart the game\";\n } else if(check()\u003d\u003d0\u0026\u0026co\u003d\u003d0) {\n cout\u003c\u003cendl\u003c\u003c\"Operation error, please try again\";\n } else {\n cout\u003c\u003cendl\u003c\u003c\"Please continue\"\u003c\u003cendl;\n }\n }\n if(len\u003d\u003d2) {\n system(\"cls\");\n cout\u003c\u003c\u0027 \u0027;\n for(int i\u003d1; i\u003c\u003d4; i++)\n cout\u003c\u003c\"---\";\n for(int i\u003d0; i\u003c4; i++) {\n cout\u003c\u003cendl\u003c\u003c\"|\";\n for(int g\u003d0; g\u003c5; g++) yc[g]\u003d-1;\n for(int j\u003d0; j\u003c4; j++) {\n if(i\u003c3\u0026\u0026s[i+1][j]) yc[j]\u003dj;\n if(i\u003c3\u0026\u0026s[i][j]) yc[j]\u003dj;\n if(j\u003c3\u0026\u0026s[i][j]) printf(\"%2d|\",s[i][j]);\n if(j\u003c3\u0026\u0026s[i][j]\u003d\u003d0\u0026\u0026s[i][j+1]) cout\u003c\u003c\" |\";\n if(s[i][j]\u003d\u003d0\u0026\u0026j\u003c3\u0026\u0026s[i][j+1]\u003d\u003d0) cout\u003c\u003c\" \";\n if(j\u003d\u003d3) {\n if(s[i][j]\u003d\u003d0) cout\u003c\u003c\" |\";\n else printf(\"%2d|\",s[i][j]);\n }\n }\n cout\u003c\u003cendl\u003c\u003c\" \";\n if(i\u003c3) {\n for(int l\u003d0; l\u003c4; l++) {\n if(l\u003d\u003dyc[l]) cout\u003c\u003c\"-- \";\n else cout\u003c\u003c\" \";\n }\n }\n }\n for(int i\u003d1; i\u003c\u003d4; i++)\n cout\u003c\u003c\"---\";\n if(check1()\u003d\u003d0) {\n cout\u003c\u003cendl\u003c\u003c\"Game Over!\"\u003c\u003cendl\u003c\u003c\"Score:\"\u003c\u003cmaxn\u003c\u003cendl;\n cout\u003c\u003c\"Click r to restart the game\";\n } else if(check()\u003d\u003d0\u0026\u0026co\u003d\u003d0) {\n cout\u003c\u003cendl\u003c\u003c\"Operation error, please try again\";\n } else {\n cout\u003c\u003cendl\u003c\u003c\"Please continue\"\u003c\u003cendl;\n }\n }\n if(len\u003d\u003d3) {\n system(\"cls\");\n cout\u003c\u003c\u0027 \u0027;\n for(int i\u003d1; i\u003c\u003d4; i++)\n cout\u003c\u003c\"----\";\n for(int i\u003d0; i\u003c4; i++) {\n cout\u003c\u003cendl\u003c\u003c\"|\";\n for(int g\u003d0; g\u003c5; g++) yc[g]\u003d-1;\n for(int j\u003d0; j\u003c4; j++) {\n if(i\u003c3\u0026\u0026s[i+1][j]) yc[j]\u003dj;\n if(i\u003c3\u0026\u0026s[i][j]) yc[j]\u003dj;\n if(j\u003c3\u0026\u0026s[i][j]) printf(\"%3d|\",s[i][j]);\n if(j\u003c3\u0026\u0026s[i][j]\u003d\u003d0\u0026\u0026s[i][j+1]) cout\u003c\u003c\" |\";\n if(s[i][j]\u003d\u003d0\u0026\u0026j\u003c3\u0026\u0026s[i][j+1]\u003d\u003d0) cout\u003c\u003c\" \";\n if(j\u003d\u003d3) {\n if(s[i][j]\u003d\u003d0) cout\u003c\u003c\" |\";\n else printf(\"%3d|\",s[i][j]);\n }\n }\n cout\u003c\u003cendl\u003c\u003c\" \";\n if(i\u003c3) {\n for(int l\u003d0; l\u003c4; l++) {\n if(l\u003d\u003dyc[l]) cout\u003c\u003c\"--- \";\n else cout\u003c\u003c\" \";\n }\n }\n }\n for(int i\u003d1; i\u003c\u003d4; i++)\n cout\u003c\u003c\"----\";\n if(check1()\u003d\u003d0) {\n cout\u003c\u003cendl\u003c\u003c\"Game Over!\"\u003c\u003cendl\u003c\u003c\"Score:\"\u003c\u003cmaxn\u003c\u003cendl;\n cout\u003c\u003c\"Click r to restart the game\";\n } else if(check()\u003d\u003d0\u0026\u0026co\u003d\u003d0) {\n cout\u003c\u003cendl\u003c\u003c\"Operation error, please try again\";\n } else {\n cout\u003c\u003cendl\u003c\u003c\"Please continue\"\u003c\u003cendl;\n }\n }\n if(len\u003d\u003d4) {\n system(\"cls\");\n cout\u003c\u003c\u0027 \u0027;\n for(int i\u003d1; i\u003c\u003d4; i++)\n cout\u003c\u003c\"-----\";\n for(int i\u003d0; i\u003c4; i++) {\n cout\u003c\u003cendl\u003c\u003c\"|\";\n for(int g\u003d0; g\u003c5; g++) yc[g]\u003d-1;\n for(int j\u003d0; j\u003c4; j++) {\n if(i\u003c3\u0026\u0026s[i+1][j]) yc[j]\u003dj;\n if(i\u003c3\u0026\u0026s[i][j]) yc[j]\u003dj;\n if(j\u003c3\u0026\u0026s[i][j]) printf(\"%4d|\",s[i][j]);\n if(j\u003c3\u0026\u0026s[i][j]\u003d\u003d0\u0026\u0026s[i][j+1]) cout\u003c\u003c\" |\";\n if(s[i][j]\u003d\u003d0\u0026\u0026j\u003c3\u0026\u0026s[i][j+1]\u003d\u003d0) cout\u003c\u003c\" \";\n if(j\u003d\u003d3) {\n if(s[i][j]\u003d\u003d0) cout\u003c\u003c\" |\";\n else printf(\"%4d|\",s[i][j]);\n }\n }\n cout\u003c\u003cendl\u003c\u003c\" \";\n if(i\u003c3) {\n for(int l\u003d0; l\u003c4; l++) {\n if(l\u003d\u003dyc[l]) cout\u003c\u003c\"---- \";\n else cout\u003c\u003c\" \";\n }\n }\n }\n for(int i\u003d1; i\u003c\u003d4; i++)\n cout\u003c\u003c\"-----\";\n if(win\u003d\u003d1) {\n cout\u003c\u003cendl\u003c\u003c\"You win!\"\u003c\u003cendl\u003c\u003c\"Click x to continue the game\"\u003c\u003cendl\u003c\u003c\"Click r to restart the game\";\n win\u003d2;\n } else if(check1()\u003d\u003d0) {\n cout\u003c\u003cendl\u003c\u003c\"Game Over!\"\u003c\u003cendl\u003c\u003c\"Score:\"\u003c\u003cmaxn\u003c\u003cendl;\n cout\u003c\u003c\"Click r to restart the game\";\n } else if(check()\u003d\u003d0\u0026\u0026co\u003d\u003d0) {\n cout\u003c\u003cendl\u003c\u003c\"Operation error, please try again\";\n } else {\n cout\u003c\u003cendl\u003c\u003c\"Please continue\"\u003c\u003cendl;\n }\n }\n }\n }\n return 0;\n}\n```","threadId":191055,"likeCnt":1,"createTime":1714619003000,"isWorkbook":false,"viewCnt":23,"openness":2,"fav":false,"id":4975,"trustable":false}