编程之美之24点游戏
来源:互联网 发布:java自动化运维 编辑:程序博客网 时间:2024/04/28 07:02
关于编程之美24点游戏的求解:
思想很简单,把array[i]和array[i+1]求加减乘除等运算,然后将值写入array[i+1],不难发现是一个递归子过程,代码不难写,如下:
#include <iostream>#include <sstream>using namespace std;int array[] = {1, 2, 3, 4};string arrayStr[] = {"1", "2", "3", "4"};const int size = sizeof array / sizeof *array;int cac24(int *array, string *arrayStr, const int size, int pos){stringstream ss;if (array == NULL || arrayStr == NULL || size <= 0 || pos == size)return -1;if (pos == size - 1){if (array[pos] == 24)return 0;elsereturn -1;}for (int i = pos; i < size - 1; i++){for (int j = i + 1; j < size; j++){int value1 = array[i];int value2 = array[j];string str1 = arrayStr[i];string str2 = arrayStr[j];int addValue = array[i] + array[j];int mulValue = array[i] * array[j];int mnsValue = array[i] - array[j];int mnsValue2 = array[j] - array[i];int divValue = -1;int divValue2 = -1;if (array[j] != 0)divValue = array[i] / array[j];if (array[i] != 0)divValue2 = array[j] / array[i];int tempValue = array[j];string tempStr = arrayStr[j];ss.str("");array[j] = addValue;ss << '(' << arrayStr[i] << '+' << tempStr << ')';arrayStr[j] = ss.str();if (cac24(array, arrayStr, size, pos + 1) == 0){return 0;}ss.str("");array[j] = mnsValue;ss << '(' << arrayStr[i] << '-' << tempStr << ')';arrayStr[j] = ss.str();if (cac24(array, arrayStr, size, pos + 1) == 0)return 0;ss.str("");array[j] = mnsValue2;ss << '(' << tempStr << '-' << array[i] << ')';arrayStr[j] = ss.str();if (cac24(array, arrayStr, size, pos + 1) == 0)return 0;ss.str("");array[j] = mulValue;ss << '(' << arrayStr[i] << '*' << tempStr << ')';arrayStr[j] = ss.str();if (cac24(array, arrayStr, size, pos + 1) == 0)return 0;ss.str("");if (divValue != 0) {array[j] = divValue;ss << '(' << arrayStr[i] << '/' << tempStr << ')';arrayStr[j] = ss.str();if (cac24(array, arrayStr, size, pos + 1) == 0)return 0;ss.str("");}if (divValue2 != 0){array[j] = divValue2;ss << '(' << tempStr << '/' << arrayStr[i] << ')';arrayStr[j] = ss.str();if (cac24(array, arrayStr, size, pos + 1) == 0)return 0;ss.str("");}}}}void main(){int result = cac24(array, arrayStr, size, 0);if (result == -1)cout << "wrong" << endl;elsecout << arrayStr[size - 1] << endl;}
- 编程之美之24点游戏
- 编程之美-24点游戏源码
- 【编程之美】24点游戏
- 编程之美24点游戏感悟
- 编程之美-----24点游戏
- 编程之美—24点游戏
- 编程之美 1.16 24点游戏
- 【编程之美】24点游戏
- 编程之美--1.16 24点游戏
- 编程之美 1.16 24点游戏
- 编程之美 1.16 24点游戏
- 《编程之美》笔记之——24点游戏
- 读书笔记之编程之美 - 1.16 24点游戏
- 编程之美: 24点游戏的解法
- 编程之美读书笔记22 1.16 24点游戏
- 编程之美上24点游戏的实现
- 编程之美1.16——24点游戏
- 编程之美:24点游戏(1.16 P100页)
- Git指令
- 我所认识的ACPI(2)
- 芯片MAX3421E (MAXIM)
- 芯片ADV7125 (ADI)
- 芯片CP2200 (Silicon Labs)
- 编程之美之24点游戏
- 芯片AD9834 (ADI)
- Win平台高级编程:网卡混杂模式抓包 (RAW SOCKET) -- 多线程IOCP完成端口
- Win平台高级编程:异步I/O,Asynchronous I/O serial functions
- Java 中JTable的用法
- Win平台高级编程:Interlocked Singly Linked Lists
- MySQL合理利用锁机制优化
- 【Android学习笔记】使用Fragments取代tabActivity开发网易新闻客户端框架
- 文件的输出与输入两种方法(常用第一种)