2048(c++)

该博客探讨了如何使用C++编程实现从特定数值集合(2, 4, 8, ..., 1024)中加法达到2048的最小次数。核心思路是从最大数值开始累加,一旦总和达到2048则停止,由于初始和为0,因此需减去这一初始操作。" 111058742,8181817,Linux内核CPU优化:从伪共享到软中断,"['Linux', '内核技术', '性能分析', '系统调用', '中断处理']
摘要由CSDN通过智能技术生成

2048

输入2,4,8,16,32,64,128,256,512,1024的个数,计算出加出2048的最小次数

基本思路:
从最大的开始加,一旦达到2048就跳出,因为最初相加是用0加的,所以要减去这一次

#include<iostream>
#include<string>
using namespace std;
int main()
{
   
    int T,count=0,sum=0;
    cin>>T;
    int a[10]={
   };
    for(int i=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
05-24
以下是一个简单的 2048 游戏的 C++ 实现,使用了二维数组来存储游戏面板: ```c++ #include <iostream> #include <cstdlib> #include <ctime> using namespace std; const int BOARD_SIZE = 4; int board[BOARD_SIZE][BOARD_SIZE]; // 初始化游戏面板 void init_board() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { board[i][j] = 0; } } } // 在空白位置随机生成一个新数 void generate_new_number() { srand(time(NULL)); int i, j; do { i = rand() % BOARD_SIZE; j = rand() % BOARD_SIZE; } while (board[i][j] != 0); board[i][j] = (rand() % 2 + 1) * 2; } // 检查游戏是否结束 bool is_game_over() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { if (board[i][j] == 0) { return false; } if (i < BOARD_SIZE - 1 && board[i][j] == board[i + 1][j]) { return false; } if (j < BOARD_SIZE - 1 && board[i][j] == board[i][j + 1]) { return false; } } } return true; } // 合并相邻的相同数 void merge_numbers() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE - 1; j++) { if (board[i][j] == board[i][j + 1]) { board[i][j] *= 2; board[i][j + 1] = 0; } } } } // 把所有数往左移动 void move_left() { for (int i = 0; i < BOARD_SIZE; i++) { int last_non_zero = -1; for (int j = 0; j < BOARD_SIZE; j++) { if (board[i][j] != 0) { if (last_non_zero != -1 && board[i][last_non_zero] == board[i][j]) { board[i][last_non_zero] *= 2; board[i][j] = 0; last_non_zero = -1; } else { if (j != last_non_zero + 1) { board[i][last_non_zero + 1] = board[i][j]; board[i][j] = 0; } last_non_zero++; } } } } } // 打印游戏面板 void print_board() { cout << "---------------------" << endl; for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { cout << board[i][j] << "\t"; } cout << endl; } cout << "---------------------" << endl; } int main() { init_board(); generate_new_number(); generate_new_number(); print_board(); while (!is_game_over()) { char c; cin >> c; switch (c) { case 'w': // 上移 break; case 's': // 下移 break; case 'a': // 左移 move_left(); generate_new_number(); break; case 'd': // 右移 break; } print_board(); } cout << "Game over." << endl; return 0; } ``` 这是一个非常简单的实现,只包含了左移操作和生成新数的功能,你可以根据需要添加其他功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值