tft每日頭條

 > 圖文

 > 24點計算公式大全

24點計算公式大全

圖文 更新时间:2025-01-31 06:13:49

24點計算公式大全?速算24點相信絕大多數人都玩過就是随機給你四張牌,包括 A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13)要求隻用' ','-','*','/'運算符以及括号改變運算 順序,使得最終運算結果為24(每個數必須且僅能用一次)遊戲很簡單,但遇到無解的情況往往讓人很郁悶你的任務就是針對每一組随機産生的四張牌,判斷 是否有解我們另外規定,整個計算過程中都不能出現小數,現在小編就來說說關于24點計算公式大全?下面内容希望能幫助到你,我們來一起看看吧!

24點計算公式大全(速算24點)1

24點計算公式大全

ICPC--1219: 速算24點題目描述

速算24點相信絕大多數人都玩過。就是随機給你四張牌,包括 A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13)。要求隻用' ','-','*','/'運算符以及括号改變運算 順序,使得最終運算結果為24(每個數必須且僅能用一次)。遊戲很簡單,但遇到無解的情況往往讓人很郁悶。你的任務就是針對每一組随機産生的四張牌,判斷 是否有解。我們另外規定,整個計算過程中都不能出現小數。

輸入

輸入數據占一行,給定四張牌。

輸出

如果有解則輸出"Y",無解則輸出"N"。

樣例輸入

A 2 3 6

樣例輸出

Y

代碼

#include<bits/stdc .h> using namespace std; int a[10]; // 輸入的數字 int num[10]; int flag = 0; int get_num(string s) { if (s.size() == 2) return 10; if (s <= "9" && s >= "0") return s[0] - '0'; else if (s == "J") return 11; else if (s == "Q") return 12; else if (s == "K") return 13; else if (s == "A") return 1; } void dfs(int num, int d) { if (flag == 1) return; if (d == 3) { if (num == 24) flag = 1; return; } else { for (int i = 1; i <= 7; i ) { if (i == 1) dfs(num a[d 1], d 1); if (i == 2) dfs(num - a[d 1], d 1); if (i == 3) dfs(num * a[d 1], d 1); if (a[d 1] != 0 && i == 4 && num % a[d 1] == 0) dfs(num / a[d 1], d 1); if (i == 5) dfs(a[d 1] - num, d 1); if (i == 6) dfs(a[d 1] - num, d 1); if (i == 7 && num != 0 && a[d 1] % num == 0) dfs(a[d 1] / num, d 1); } } return; } void check_two() { num[1] = a[0] a[1], num[2] = a[0] - a[1], num[3] = a[0] * a[1]; if (a[0] % a[1] != 0) num[4] = -1000; else num[4] = a[0] / a[1]; num[5] = a[2] a[3], num[6] = a[2] - a[3], num[7] = a[2] * a[3]; if (a[2] % a[3] != 0) num[8] = -1000; else num[8] = a[2] / a[3]; for (int i = 1; i <= 4; i ) { for (int j = 5; j <= 8; j ) { if (i == j || a[i] == -1000 || a[j] == -1000) continue; for (int k = 1; k <= 4; k ) { int num1 = 0; if (k == 1) num1 = num[i] num[j]; if (k == 2) num1 = num[i] - num[j]; if (k == 3) num1 = num[i] * num[j]; if (k == 4) { if (num[j] != 0 && num[i] % num[j] == 0) num1 = num[i] / num[j]; else num1 = -1000; } if (num1 == 24) { flag = 1; return; } } } } flag = 0; return; } int main(){ string s; int cnt = 0; for (int i = 1; i <= 4; i ) { cin >> s; a[cnt ] = get_num(s); } sort(a, a cnt); do { flag = 0; dfs(a[0], 0); if (flag != 1) check_two(); if (flag == 1) { cout << "Y" << endl; return 0; } } while (next_permutation(a, a cnt)); cout << "N" << endl; return 0; }

ICPC--1220: SO EASY,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved