最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2019年10月22日 09:41:10   作者:亦文夢之  
這篇文章主要為大家詳細(xì)介紹了C語言如何實(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ù),請?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)先級別,可加括號控制,最終使運(yùn)算結(jié)果為24。請輸出一種解決方案的表達(dá)式,用括號表示運(yùn)算優(yōu)先。如果沒有一種解決方案,則輸出-1表示無解。

輸入格式說明:

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

輸出格式說明:

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

樣例輸入與輸出:

解答說明:

四個(gè)操作數(shù),三個(gè)操作符,兩個(gè)括號,有以下五種計(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,不然會有格式錯(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;
}

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

相關(guān)文章

  • C++深入淺出探索數(shù)據(jù)結(jié)構(gòu)的原理

    C++深入淺出探索數(shù)據(jù)結(jié)構(gòu)的原理

    C++的數(shù)據(jù)結(jié)構(gòu)很多,很復(fù)雜,所以本文將通過示例帶大家深入了解一下C++中的數(shù)據(jù)結(jié)構(gòu)與算法。文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-05-05
  • c語言double類型默認(rèn)輸出小數(shù)幾位

    c語言double類型默認(rèn)輸出小數(shù)幾位

    在本篇文章里小編給大家分享的是關(guān)于c語言double類型默認(rèn)輸出小數(shù)幾位的相關(guān)知識點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2020-04-04
  • C++實(shí)現(xiàn)簡單掃雷游戲

    C++實(shí)現(xiàn)簡單掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡單掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C語言字符串處理的驚天大坑問題解決

    C語言字符串處理的驚天大坑問題解決

    這篇文章主要為大家介紹了C語言字符串處理的驚天大坑問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • C語言實(shí)現(xiàn)三子棋程序

    C語言實(shí)現(xiàn)三子棋程序

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)三子棋程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++ 實(shí)現(xiàn)即時(shí)通信的示例代碼(直接運(yùn)行)

    C++ 實(shí)現(xiàn)即時(shí)通信的示例代碼(直接運(yùn)行)

    本文主要介紹了C++ 實(shí)現(xiàn)即時(shí)通信的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C語言實(shí)現(xiàn)UDP通信

    C語言實(shí)現(xiàn)UDP通信

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)UDP通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • OpenCV實(shí)現(xiàn)傾斜文字校正

    OpenCV實(shí)現(xiàn)傾斜文字校正

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)傾斜文字校正,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Qt實(shí)現(xiàn)簡易毛玻璃效果的示例代碼

    Qt實(shí)現(xiàn)簡易毛玻璃效果的示例代碼

    這篇文章主要介紹了Qt如何利用模糊功能實(shí)現(xiàn)簡易的毛玻璃效果,并且鼠標(biāo)可以移動無邊框窗口,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-06-06
  • 適合初學(xué)者的C語言字符串講解

    適合初學(xué)者的C語言字符串講解

    字符串主要用于編程,概念說明、函數(shù)解釋、用法詳述見正文,這里補(bǔ)充一點(diǎn):字符串在存儲上類似字符數(shù)組,所以它每一位的單個(gè)元素都是可以提取的
    2022-04-04

最新評論

布拖县| 台江县| 思茅市| 进贤县| 阜阳市| 曲松县| 盘锦市| 辽中县| 开化县| 辛集市| 仪陇县| 兴隆县| 刚察县| 利川市| 文山县| 南开区| 滁州市| 华坪县| 石狮市| 安阳市| 宣威市| 滨州市| 中牟县| 阿拉善右旗| 德钦县| 宜兴市| 靖西县| 临武县| 龙井市| 连州市| 清水河县| 克什克腾旗| 漳浦县| 永福县| 肇东市| 镇赉县| 会同县| 翁源县| 凭祥市| 浪卡子县| 太谷县|