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

C語言實現(xiàn)24點游戲源代碼

 更新時間:2019年10月22日 10:36:10   作者:andywen0090  
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)24點游戲源代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)24點游戲的具體代碼,供大家參考,具體內(nèi)容如下

參考文章:C語言實現(xiàn)經(jīng)典24點算法

將算法實現(xiàn)改成C語言,并可在linux服務(wù)器上運行。同時修改為可顯示所有結(jié)果。
注:如果傳參重復(fù),如4,4,7,7這樣,會回顯重復(fù)結(jié)果,暫無法清除。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h> 

const double PRECISION = 1E-6; 
#define COUNT 4 
const int RESULT = 24; 
#define STRLEN 50
double number[COUNT] = {0}; //這里一定要用double,
char expression[COUNT][STRLEN] = {0}; //保存表達(dá)式 

#define TRUE 1
#define FALSE 0

int cnt = 0;

void Test(int n)
{ 
 int i = 0;
 int j = 0;
 int len = 0;
 //遞歸結(jié)束 
 if(1 == n){ 
 if(number[0] == RESULT)
 { 
  // 避免輸出前后括號 
  for (i = 1; i < strlen(expression[0]) - 1; i++) 
  { 
  printf("%c", expression[0][i]); 
  } 
  printf("\n"); 
  cnt++;
  return; 
 } 
 else 
  return; 
 } 
 //遞歸過程 
 for(i=0;i<n;i++){ 
 for(j=i+1;j<n;j++){ 
  double a,b; 
  char expa[STRLEN] = {0};
  char expb[STRLEN] = {0};
  a=number[i]; 
  b=number[j]; 
  // 刪除number[j]元素,用number[n-1]填補(bǔ) 
  number[j]=number[n-1]; 
  strcpy(expa, expression[i]);
  strcpy(expb, expression[j]);
  // 刪除expression[j]元素,用expression[n-1]填補(bǔ) 
  strcpy(expression[j], expression[n-1]);

  // 加法 
  len= strlen(expression[i]);
  snprintf(expression[i], STRLEN, "(%s+%s)", expa, expb);
  number[i]=a+b; 
  Test(n-1);
  //減號有兩種情況,a-b與b-a 
  len= strlen(expression[i]);
  snprintf(expression[i], STRLEN, "(%s-%s)", expa, expb);
  number[i]=a-b; 
  Test(n-1); 
  if(a != b)
  {
  len= strlen(expression[i]);
  snprintf(expression[i], STRLEN, "(%s-%s)", expb, expa); 
  number[i]=b-a; 
  Test(n-1); 
  }
  // 乘法 
  len= strlen(expression[i]);
  snprintf(expression[i], STRLEN, "(%s*%s)", expa, expb); 
  number[i]=a*b; 
  Test(n-1); 
  //除法也有兩種情況,a/b與b/a 
  if(b!=0){ 
  len= strlen(expression[i]);
  snprintf(expression[i], STRLEN, "(%s/%s)", expa, expb);
  number[i]=a/b; 
  Test(n-1);
  } 
  if((a!=0) && (a != b)){ 
  len= strlen(expression[i]);
  snprintf(expression[i], STRLEN, "(%s/%s)", expb, expa);
  number[i]=b/a; 
  Test(n-1); 
  } 
  //恢復(fù)數(shù)組 
  number[i]=a; 
  number[j]=b; 
  strcpy(expression[i], expa);
  strcpy(expression[j], expb);
 } 
 } 
 return; 
} 
int main(int argc, char **argv)
{ 
 int i = 0;

 if(5 != argc)
 {
 printf("arg err\n");
 return 0;
 }

 for(i=0;i<COUNT;i++)
 { 
 char buffer[20]; 
 number[i] = atoi(argv[i + 1]);
 strcpy(expression[i], argv[i + 1]);
 } 

 Test(COUNT);

 if(0 != cnt) 
 {
 printf("Total[%d], Success\n", cnt); 
 }
 else 
 {
 printf("Fail\n"); 
 }
 return 0;
} 

運行結(jié)果如下:

andy@ubuntu14:~/work$ ./test 5 6 7 8
((5+7)-8)*6
(5+7)*(8-6)
8/((7-5)/6)
(6/(7-5))*8
6/((7-5)/8)
(8/(7-5))*6
(6*8)/(7-5)
((5-8)+7)*6
(7-(8-5))*6
(5+7)*(8-6)
(6*8)/(7-5)
(5+(7-8))*6
(5-(8-7))*6
Total[13], Success
andy@ubuntu14:~/work$ ./test 7 7 7 7
Fail

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

相關(guān)文章

  • c++ 對數(shù)器實現(xiàn)示例

    c++ 對數(shù)器實現(xiàn)示例

    對數(shù)器用于在自己的本地平臺驗證算法正確性,本文詳細(xì)的介紹了c++ 對數(shù)器實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C++簡單實現(xiàn)Dijkstra算法

    C++簡單實現(xiàn)Dijkstra算法

    這篇文章主要為大家詳細(xì)介紹了C++簡單實現(xiàn)Dijkstra算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C語言快速冪取模算法小結(jié)

    C語言快速冪取模算法小結(jié)

    這篇文章主要介紹了C語言快速冪取模算法,包括了算法的分析與改進(jìn),是很多程序設(shè)計競賽中常見的算法,需要的朋友可以參考下
    2014-09-09
  • C++編程中__if_exists與__if_not_exists語句的用法

    C++編程中__if_exists與__if_not_exists語句的用法

    這篇文章主要介紹了C++編程中__if_exists與__if_not_exists語句的用法,是C++中用于判斷指定的標(biāo)識符是否存在的基礎(chǔ)的條件判斷語句,需要的朋友可以參考下
    2016-01-01
  • C++中使用正則匹配問題

    C++中使用正則匹配問題

    這篇文章主要介紹了C++中使用正則匹配問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 學(xué)生信息管理系統(tǒng)C語言版

    學(xué)生信息管理系統(tǒng)C語言版

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 用C語言進(jìn)行最基本的socket編程

    用C語言進(jìn)行最基本的socket編程

    這篇文章主要介紹了C語言下socket編程的基本知識講解,包括最基本的客戶端發(fā)送及服務(wù)器端接受數(shù)據(jù)的實現(xiàn),需要的朋友可以參考下
    2015-11-11
  • VS中動態(tài)庫的創(chuàng)建和調(diào)用方式詳解

    VS中動態(tài)庫的創(chuàng)建和調(diào)用方式詳解

    庫的存在形式本質(zhì)上來說庫是一種可執(zhí)行代碼的二進(jìn)制,? 靜態(tài)庫和動態(tài)庫的區(qū)別主要是在鏈接階段處理庫的方式不同而區(qū)分的,本文介紹VS中動態(tài)庫的創(chuàng)建和調(diào)用方式,感興趣的朋友一起看看吧
    2024-01-01
  • 老生常談C語言鏈表小結(jié)

    老生常談C語言鏈表小結(jié)

    鏈表是一種物理存儲結(jié)構(gòu)上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的 ,這篇文章主要介紹了C語言鏈表,需要的朋友可以參考下
    2021-11-11
  • C語言結(jié)構(gòu)體,枚舉,聯(lián)合體詳解

    C語言結(jié)構(gòu)體,枚舉,聯(lián)合體詳解

    下面小編就為大家?guī)硪黄媪私釩語言結(jié)構(gòu)體,枚舉,聯(lián)合體。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-09-09

最新評論

揭西县| 桐城市| 平江县| 黄骅市| 专栏| 青浦区| 武义县| 新邵县| 邵东县| 利川市| 甘南县| 财经| 望谟县| 普定县| 固始县| 巴林右旗| 友谊县| 康马县| 武陟县| 微博| 中江县| 嘉荫县| 贵阳市| 利辛县| 潮安县| 宝鸡市| 库伦旗| 莲花县| 汕尾市| 通海县| 津南区| 海林市| 汶上县| 桃源县| 南宁市| 青龙| 宾川县| 裕民县| 六盘水市| 阳江市| 龙井市|