欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言實(shí)現(xiàn)撲克牌計(jì)算24點(diǎn)

 更新時(shí)間:2019年10月22日 09:41:10   作者:亦文夢(mèng)之  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言如何實(shí)現(xiàn)撲克牌計(jì)算24點(diǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

題目描述:

一副撲克牌的每張牌表示一個(gè)數(shù)(J、Q、K分別表示11、12、13,兩個(gè)司令都表示6)。任取4張牌,即得到4個(gè)1~13的數(shù),請(qǐng)?zhí)砑舆\(yùn)算符(規(guī)定為加+ 減- 乘* 除/ 四種)使之成為一個(gè)運(yùn)算式。每個(gè)數(shù)只能參與一次運(yùn)算,4個(gè)數(shù)順序可以任意組合,4個(gè)運(yùn)算符任意取3個(gè)且可以重復(fù)取。運(yùn)算遵從一定優(yōu)先級(jí)別,可加括號(hào)控制,最終使運(yùn)算結(jié)果為24。請(qǐng)輸出一種解決方案的表達(dá)式,用括號(hào)表示運(yùn)算優(yōu)先。如果沒有一種解決方案,則輸出-1表示無解。

輸入格式說明:

輸入在一行中給出4個(gè)整數(shù),每個(gè)整數(shù)取值在[1, 13]。

輸出格式說明:

輸出一種解決方案的表達(dá)式,用括號(hào)表示運(yùn)算優(yōu)先。如果沒有解決方案,請(qǐng)輸出-1。

樣例輸入與輸出:

解答說明:

四個(gè)操作數(shù),三個(gè)操作符,兩個(gè)括號(hào),有以下五種計(jì)算模式

((A op B) op C) op D

(A op (B op C)) op D

A op (B op (C op D))

A op ((B op C) op D)

(A op B) op (C op D)

將每一種模式寫成函數(shù),最后采用窮舉法找到計(jì)算結(jié)果為24的算式。

源碼:

//注意要在輸出結(jié)果后面加\n,不然會(huì)有格式錯(cuò)誤,坑爹啊!!!
#include "stdio.h"
#include "stdlib.h"
 
char op[5]={'#','+','-','*','/',};
 
float cal(float x,float y,int op)
{
 switch(op)
 {
 case 1:return x+y;
 case 2:return x-y;
 case 3: return x*y;
 case 4: return x/y;
 }
}
 
float calculate_model1(float i,float j,float k,float t,int op1,int op2,int op3)
{
 float r1,r2,r3;
 r1 = cal(i,j,op1);
 r2 = cal(r1,k,op2);
 r3 = cal(r2,t,op3);
 return r3;
}
 
float calculate_model2(float i,float j,float k,float t,int op1,int op2,int op3)
{
 float r1,r2,r3;
 r1 = cal(j,k,op2);
 r2 = cal(i,r1,op1);
 r3 = cal(r2,t,op3);
 return r3;
}
 
float calculate_model3(float i,float j,float k,float t,int op1,int op2,int op3)
{
 float r1,r2,r3 ;
 r1 = cal(k,t,op3);
 r2 = cal(j,r1,op2);
 r3 = cal(i,r2,op1);
 return r3;
}
 
 
float calculate_model4(float i,float j,float k,float t,int op1,int op2,int op3)
{
 float r1,r2,r3;
 r1 = cal(j,k,op2);
 r2 = cal(r1,t,op3);
 r3 = cal(i,r2,op1);
 return r3;
}
 
float calculate_model5(float i,float j,float k,float t,int op1,int op2,int op3)
{
 float r1,r2,r3 ;
 r1 = cal(i,j,op1);
 r2 = cal(k,t,op3);
 r3 = cal(r1,r2,op2);
 return r3;
}
 
int get24(int i,int j,int k,int t)
{
 int op1,op2,op3;
 int flag=0;
 for(op1=1;op1<=4;op1++)
 for(op2=1;op2<=4;op2++)
  for(op3=1;op3<=4;op3++)
  {
  if(calculate_model1(i,j,k,t,op1,op2,op3)==24){
 printf("((%d%c%d)%c%d)%c%d\n",i,op[op1],j,op[op2],k,op[op3],t);flag = 1;goto OUT;
  }
  if(calculate_model2(i,j,k,t,op1,op2,op3)==24){
 printf("(%d%c(%d%c%d))%c%d\n",i,op[op1],j,op[op2],k,op[op3],t);flag = 1;goto OUT;
 }
  if(calculate_model3(i,j,k,t,op1,op2,op3)==24){
 printf("%d%c(%d%c(%d%c%d))\n",i,op[op1],j,op[op2],k,op[op3],t);flag = 1;goto OUT;
 }
  if(calculate_model4(i,j,k,t,op1,op2,op3)==24){
 printf("%d%c((%d%c%d)%c%d)\n",i,op[op1],j,op[op2],k,op[op3],t);flag = 1;goto OUT;
 }
  if(calculate_model5(i,j,k,t,op1,op2,op3)==24){
 printf("(%d%c%d)%c(%d%c%d)\n",i,op[op1],j,op[op2],k,op[op3],t);flag = 1;goto OUT;
 }
  }
 
OUT: return flag;
}
 
int main()
{
 int x,y,m,n;
 int i,j,k,t;
 int in[4];
 int flag;
 for(i=0;i<4;i++)
 scanf("%d",&in[i]);
 for(i=0;i<4;i++){
 for(j=0;j<4;j++){
  if(j==i) continue;
  for(k=0;k<4;k++){
  if(i==k||j==k) continue;
  for(t=0;t<4;t++){
   if(t==i||t==j||t==k) continue;
   x = in[i];
   y = in[j];
   m = in[k];
   n = in[t];
   flag = get24(x,y,m,n);
   if(flag ==1) goto END;
  }
  }
 }
 }
 if(flag == 0)
 printf("-1\n");
 
 END: // system("pause");
 
 return 0;
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語(yǔ)言文件操作函數(shù)大全(超詳細(xì))

    C語(yǔ)言文件操作函數(shù)大全(超詳細(xì))

    本篇文章是對(duì)C語(yǔ)言中的文件操作函數(shù)進(jìn)行了詳細(xì)的總結(jié)分析,需要的朋友參考下
    2013-05-05
  • 簡(jiǎn)單講解哈希表

    簡(jiǎn)單講解哈希表

    本文主要介紹了哈希表簡(jiǎn)單知識(shí)及C語(yǔ)言實(shí)現(xiàn)哈希表實(shí)例,文中利用圖片以及代碼簡(jiǎn)單講解了相關(guān)知識(shí),感興趣的小伙伴可以多多學(xué)習(xí)這篇文章
    2021-09-09
  • C語(yǔ)言中查找字符在字符串中出現(xiàn)的位置的方法

    C語(yǔ)言中查找字符在字符串中出現(xiàn)的位置的方法

    這篇文章主要介紹了C語(yǔ)言中查找字符在字符串中出現(xiàn)的位置的方法,分別是strchr()函數(shù)和strrchr()函數(shù)的使用,需要的朋友可以參考下
    2015-08-08
  • 掌握C++:揭秘寫時(shí)拷貝與淺深拷貝之間的關(guān)系

    掌握C++:揭秘寫時(shí)拷貝與淺深拷貝之間的關(guān)系

    探索C++的奧秘,本指南將揭秘寫時(shí)拷貝與淺深拷貝之間的微妙關(guān)系,摸索這些復(fù)雜概念背后的邏輯,讓你的編程技能瞬間提升,來吧,讓我們一起進(jìn)入這個(gè)引人入勝的C++世界!
    2024-01-01
  • 使用WindowsAPI實(shí)現(xiàn)播放PCM音頻的方法

    使用WindowsAPI實(shí)現(xiàn)播放PCM音頻的方法

    這篇文章主要介紹了使用WindowsAPI實(shí)現(xiàn)播放PCM音頻的方法,很實(shí)用的一個(gè)功能,需要的朋友可以參考下
    2014-08-08
  • 深入VC回調(diào)函數(shù)的使用詳解

    深入VC回調(diào)函數(shù)的使用詳解

    本篇文章是對(duì)VC回調(diào)函數(shù)的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語(yǔ)言編寫多功能日歷

    C語(yǔ)言編寫多功能日歷

    之前看到本站給大家分享了一則C語(yǔ)言實(shí)現(xiàn)的簡(jiǎn)單日歷,就手癢了,也想自己寫一個(gè),既然有簡(jiǎn)單了,那咱寫個(gè)稍微復(fù)雜點(diǎn)的,多功能的吧。呵呵,玩笑玩笑
    2015-03-03
  • 詳解C語(yǔ)言中的符號(hào)常量、變量與算術(shù)表達(dá)式

    詳解C語(yǔ)言中的符號(hào)常量、變量與算術(shù)表達(dá)式

    這篇文章主要介紹了C語(yǔ)言中的符號(hào)常量、變量與算術(shù)表達(dá)式,是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • C/C++ 中memset() 函數(shù)詳解及其作用介紹

    C/C++ 中memset() 函數(shù)詳解及其作用介紹

    這篇文章主要介紹了C/C++ 中memset() 函數(shù)詳解及其作用介紹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 詳解利用C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)單的內(nèi)存池

    詳解利用C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)單的內(nèi)存池

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言如何實(shí)現(xiàn)簡(jiǎn)單的內(nèi)存池的相關(guān)資料,設(shè)計(jì)內(nèi)存池的目標(biāo)是為了保證服務(wù)器長(zhǎng)時(shí)間高效的運(yùn)行,通過對(duì)申請(qǐng)空間小而申請(qǐng)頻繁的對(duì)象進(jìn)行有效管理,減少內(nèi)存碎片的產(chǎn)生,合理分配管理用戶內(nèi)存,需要的朋友可以參考下
    2021-08-08

最新評(píng)論