Run ID 作者 问题 语言 测评结果 Time Memory 代码长度 提交时间
108963 彭士宝 18排列骨头 C++ Time Limit Exceeded 1000 MS 252 KB 1347 2025-01-23 17:32:16

Tests(0/1):


Code:

#include <iostream> #include <vector> using namespace std; int main() { vector<int> positions(30, 0); // 初始化30个位置,0表示胡萝卜,1表示骨头 int count = 0; // 当前数到的数字 int removed = 0; // 已取出的数量 int index = 0; // 当前位置 // 逆向推导,从最后剩下的15个位置(全是骨头)开始 for (int i = 0; i < 15; ++i) { positions[i] = 1; // 最后剩下的15个位置全是骨头 } // 模拟取出过程,逆向推导初始排列 while (removed < 15) { count = 0; // 重置计数 int steps = 0; // 记录步数 // 找到下一个要取出的位置 while (steps < 9) { if (positions[index] != -1) { // 如果当前位置未被标记为已取出 count++; if (count == 9) { positions[index] = -1; // 标记为已取出 removed++; } } index = (index + 1) % 30; // 移动到下一个位置 steps++; } } // 输出结果 for (int i = 0; i < 30; ++i) { if (positions[i] == 1) { cout << "骨头 "; } else { cout << "胡萝卜 "; } } cout << endl; return 0; }