天天看點

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

《程式設計之美》讀書筆記22:    1.16  24點遊戲(補充)

給定n個數,能否隻通過加減乘除計算得到24?

書上給出的最後一種解法,通過使用集合記錄中間結果來減少備援計算。本以為,程式會占用大量的記憶體,用一個極端的例子(13, 773, 28, 98, 731, 1357,97357246這7個數)測試了一下實作的程式,發現程式竟然占用了1G以上的記憶體(無論集合的實作采用STL中的set還是unordered_set),但後來,取7個均在1到13之間的數,再重新測試了下發現,程式所占用的記憶體比想像的小的多,也就幾兆。

對數值都在1到13之間的n個數的所有組合進行判斷。在n等于4時,實作的程式約過1秒就給出了結果,而n等于5時,程式要運作58秒,效率實在差,可以通過這幾方面優化:

① 儲存每個集合的子集合的編号:

對給定的n,共有1到2^n – 1個集合,每個集合的子集合編号是固定的,但原程式每計算一個n個數的組合,都要對這些子集合編号計算一遍,可以儲存每個集合的子集合編号,減少大量的重複計算。

② 改進計算子集合編号的算法:

原程式的算法的時間複雜度是O(4^n),在n較大時,相當慢。

③ 對最後一個集合是否含有24的判斷:

原程式要周遊該集合所有的元素,效率比較差,可以考慮,在将兩個集合合并到該集合時,隻對取出的兩個元素的計算結果是否為24進行判斷,這樣不僅省去最後的周遊,而且不用将結果插入到最後的那個集合中,省去了大量操作。

采用①和③兩種改進方法後,程式運作時間由原來的58秒縮短到了14秒,但這還不能讓人滿意。對2,3,5,6,8這5個數,如果用書上的第一種方法,可以隻調用4次函數就可以得到結果:2+3+5+6+8=24,但用集合的方法來處理,卻要對所有的集合進行子集合合并後才能給出結果,這造成了效率極差,可以這樣改進該算法:

初始有n個集合:每一次任意取出2個集合,合并後,放回去,再取出任意2個集合,重複前面的操作,直到隻剩下一個集合為止。

例如:初始有5個數,把這5個數分别放到5個集合,并分别編号為:1、2、4、8、16。任意取出2個集合,假設為1和4,将1和4合并,得到編号為5(=1+4)的集合,剩下的集合為:5、2、16、8,再取出2個,假設為5和8,合并後,得到13、2、16,再取2個,假設為13和16,合并後得到29、2,當剩下2個集合時,可以直接對這兩個集合間的的計算結果是否為24進行判斷,直接得出結果,省去不必要的合并(合并後再判斷是否有元素近似等于24,程式運作時間8s多,而直接對計算結果判斷,程式隻要運作1s多)。

優化後的程式,隻要運作1s多。但其效率還是不如書上的第一種方法的改進版,仔細想想,n越大,集合的元素也就越多,兩個集合之間的合并,就越耗時間。而且采用集合儲存中間結果,表面上減少了重複狀态,會提高效率,但實際上,由于采用了集合,就多了很多不必要的計算,(比如,對2+3+5+6+8=24,最少隻要4次計算就能得出結果,采用集合合并後,則要計算幾百次(約為6^4)),再加上實作集合所采用的資料結構的開銷,效率高不了。

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

24_set_1

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < iostream >

 2

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < fstream >

 3

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < unordered_set >

 4

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < vector >

 5

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < ctime >

 6

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < cmath >

 7

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

using  namespace  std;

 8

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

typedef unordered_set < double >  mset;

 9

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

10

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

unsigned  long  long  all_size = 0 ;

11

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

unsigned  long  long  big_size = 0 ;

12

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

13

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

14

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

bool  calc( int  src[], size_t N,  double  M  =  24.0 )

15

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

16

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  if (N == 0 || src == NULL) return false;

17

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  mset result[1 << N];

18

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (size_t i = 0; i < N; ++i) result[1<<i].insert((double)src[i]); 

19

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (size_t i =1; i < (1<<N); ++i) {

20

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    for (size_t j = 1; j <= (i >> 1); ++j) {

21

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

       if ((i & j) != j) continue;

22

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

       for (mset::iterator p = result[j].begin(); p != result[j].end(); ++p) {

23

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

         double va = *p;

24

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

         size_t k = i ^ j;

25

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

         for (mset::iterator q = result[k].begin(); q != result[k].end(); ++q) {

26

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

           double vb = *q;

27

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

           result[i].insert(va + vb);

28

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

           result[i].insert(va - vb);

29

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

           result[i].insert(vb - va);

30

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

           result[i].insert(va * vb);

31

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

           if (vb != 0.0) result[i].insert(va / vb);

32

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

           if (va != 0.0) result[i].insert(vb / va);

33

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

         }

34

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

       }

35

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    }  

36

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  }

37

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

38

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  size_t j = (1 << N) - 1;

39

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  all_size=0;

40

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  big_size=result[j].size();

41

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (size_t i =1; i < (1<<N); ++i) all_size += result[i].size();

42

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (mset::iterator p = result[j].begin(); p != result[j].end(); ++p) {

43

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    if (fabs(M - *p) < 1e-9) return true;

44

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  }

45

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  return false;

46

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

47

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

48

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

49

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

void  calc_range( int  first,  int  last,size_t N,  double  M  =  24 ,  string  filename = " nul " )

50

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

51

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  if (N ==0 || first >= last || filename.empty()) return;

52

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  clock_t ta = clock();

53

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  vector<int> vv(N, first);

54

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  int *end = &vv[N-1], *p = end, *arr = &vv[0];

55

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  ofstream ofs(filename.c_str());

56

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  size_t count = 0;

57

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  size_t count_b = 0;

58

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  unsigned long long max_big_size =0, max_all_size = 0;

59

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  while(true){

60

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    ++count_b;

61

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    if (calc(arr,N, M)) {

62

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      ofs.width(4);

63

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      ofs<<  ++count << "    ";

64

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      for (size_t i = 0; i < N; ++i) { 

65

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        ofs.width(2);        

66

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        ofs << arr[i]<< " ";

67

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      } 

68

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      ofs << "\n";

69

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      if (max_big_size < big_size) max_big_size = big_size;

70

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      if (max_all_size < all_size) max_all_size = all_size;

71

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    }   

72

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    while (p >= arr && *p >= last) --p;

73

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    if (p < arr) break;

74

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    int tmp = ++*p;

75

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    while (p < end) *++p = tmp;

76

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  }

77

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  ofs.close();

78

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  const char sep[] = "/"; 

79

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  cout  << "total: " << count << sep << count_b << "\n"

80

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        << max_big_size << sep << max_all_size << "\n"

81

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

   << "time:  " << clock() - ta << "\n\n"; 

82

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

83

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

84

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

int  main()

85

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

86

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  calc_range(1,13,5,24,"nul");

87

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  cin.get();

88

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

89

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

24_set_2.cpp

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  2

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < iostream >

  3

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < fstream >

  4

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < vector >

  5

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < deque >

  6

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < unordered_set >

  7

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < ctime >

  8

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < cmath >

  9

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

using  namespace  std;

 10

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 11

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

typedef unordered_set < double >  MSET;

 12

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

typedef MSET::iterator MSETI;

 13

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

typedef deque < size_t > ::iterator DQI;

 14

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 15

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

const  size_t N  =  5 ;

 16

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

const  double  M  =  24 ;

 17

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

static  MSET result[ 1 << N];

 18

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

// static vector<MSET> result(1<<N);

 19

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

// static vector<MSET> result(1<<N, MSET(256));

 20

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

static  deque < size_t >  dq[ 1 << N];

 21

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

size_t max_size  =  0 ;

 22

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 23

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

inline  void  init()

 24

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

 25

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  size_t count = 0;

 26

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (size_t i =1; i < (1<<N); ++i) {

 27

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    for (size_t j = 1; j <= (i >> 1); ++j) {

 28

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      if ((i & j) != j) continue;

 29

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      dq[i].push_back(j);

 30

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      ++count;

 31

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    }

 32

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  }

 33

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  cout << "total sets: " << count << "\n";

 34

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

 35

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 36

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

inline  bool  isequal_m( double  na)

 37

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

 38

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  const double zero = 1e-9;

 39

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  if (fabs(na - M) < zero) return true;

 40

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  return false;

 41

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

 42

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 43

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

bool  calc( int  src[])

 44

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

 45

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  if (N == 0 || src == NULL) return false;

 46

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  const size_t ii = (1 << N) - 1;

 47

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (size_t i =1; i <= ii; ++i)  result[i].clear();

 48

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (size_t i = 0; i < N; ++i) result[1<<i].insert((double)src[i]); 

 49

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (size_t i = 1; i < ii; ++i) {

 50

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    for (DQI r = dq[i].begin(), re = dq[i].end(); r != re; ++r){

 51

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      size_t j = *r;

 52

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      for (MSETI p = result[j].begin(), pe = result[j].end(); p != pe; ++p) {

 53

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        double va = *p;

 54

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        size_t k = i - j;

 55

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        for (MSETI q = result[k].begin(),qe = result[k].end(); q != qe; ++q) {

 56

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

          double vb = *q;

 57

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

          result[i].insert(va + vb);

 58

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

          result[i].insert(va - vb);

 59

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

          result[i].insert(vb - va);

 60

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

          result[i].insert(va * vb);

 61

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

          if (va != 0 && vb != 0) { 

 62

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

            result[i].insert(va / vb);

 63

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

            result[i].insert(vb / va);

 64

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

          }  

 65

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        }

 66

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      }

 67

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    }

 68

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  }

 69

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 70

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (size_t j = 1; j < ii; ++j) {

 71

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    if (max_size < result[j].size()) max_size = result[j].size();

 72

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  }

 73

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 74

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (DQI r = dq[ii].begin(), re = dq[ii].end(); r != re; ++r) {

 75

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    size_t j = *r;

 76

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    for (MSETI p = result[j].begin(), pe = result[j].end(); p != pe; ++p) {

 77

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      double va = *p;

 78

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      size_t k = ii - j;

 79

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      for (MSETI q = result[k].begin(),qe = result[k].end(); q != qe; ++q) {

 80

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        double vb = *q;   

 81

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        if (isequal_m(va + vb)) return true;

 82

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        if (isequal_m(va - vb)) return true;

 83

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        if (isequal_m(vb - va)) return true;

 84

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        if (isequal_m(va * vb)) return true;

 85

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        if (va != 0 && vb != 0) { 

 86

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

          if (isequal_m(va / vb)) return true;

 87

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

          if (isequal_m(vb / va)) return true;           

 88

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        }  

 89

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      }

 90

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    }

 91

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  } 

 92

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  return false;

 93

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

 94

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 95

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 96

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

void  calc_range( int  first,  int  last,  string  filename = " nul " )

 97

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

 98

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  if (N ==0 || first >= last || filename.empty()) return;

 99

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  clock_t ta = clock();

100

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  init();

101

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  vector<int> vv(N, first);

102

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  int *end = &vv[N-1], *p = end, *arr = &vv[0];

103

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  ofstream ofs(filename.c_str());

104

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  size_t count = 0;

105

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  size_t count_b = 0;

106

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  while(true){

107

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    ++count_b;

108

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    if (calc(arr)) {

109

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      ofs.width(4);

110

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      ofs<<  ++count << "    ";

111

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      for (size_t i = 0; i < N; ++i) { 

112

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        ofs.width(2);        

113

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        ofs << arr[i]<< " ";

114

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      } 

115

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      ofs << "\n";

116

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    }  

117

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    while (p >= arr && *p >= last) --p;

118

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    if (p < arr) break;

119

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    int tmp = ++*p;

120

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    while (p < end) *++p = tmp;

121

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  }

122

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  ofs.close();

123

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  const char sep[] = "/"; 

124

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  cout << "total: " << count << sep << count_b << "\n"

125

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

       << "max_size: " << max_size << "\n"

126

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

       << "time:  " << clock() - ta << "\n\n"; 

127

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

128

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

129

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

130

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

int  main()

131

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

132

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  calc_range(1,13,"nul");

133

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  cin.get();

134

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

135

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

24_set_3.cpp

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  2

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < iostream >

  3

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < fstream >

  4

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < vector >

  5

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < unordered_set >

  6

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < ctime >

  7

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

#include  < cmath >

  8

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

using  namespace  std;

  9

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 10

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

typedef unordered_set < double >  MSET;

 11

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

typedef MSET::const_iterator MSETI;

 12

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 13

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

const  size_t N  =  5 ;

 14

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

const  double  M  =  24 ;

 15

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

static  MSET result[ 1 << N];

 16

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

static  size_t num[N];

 17

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

// static vector<MSET> result(1<<N);

 18

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

// static vector<MSET> result(1<<N, MSET(256));

 19

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

size_t count_expr  =  0 ;

 20

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

size_t count_func =  0 ;

 21

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 22

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

bool  calc(size_t step);

 23

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 24

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

bool  calc_num( int  src[])

 25

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

 26

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  if (M <= 1) {

 27

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    if (M == 1 && src[0] == 24) return true;

 28

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    return false;

 29

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  } 

 30

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (size_t i = 0, j = 1; i < N; ++i, j *= 2) num[i] = j; 

 31

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (size_t i = 1; i < (1 << N); ++i)  result[i].clear();

 32

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (size_t i = 0; i < N; ++i) result[1<<i].insert((double)src[i]); 

 33

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  return calc(N);

 34

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

 35

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 36

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

inline  void  merge_set(size_t i, size_t j)

 37

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

 38

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  const size_t k = i + j;

 39

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (MSETI p = result[i].begin(), pe = result[i].end(); p != pe; ++p) {

 40

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    double va = *p;

 41

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    for (MSETI q = result[j].begin(),qe = result[j].end(); q != qe; ++q) {

 42

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      double vb = *q;

 43

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      result[k].insert(va + vb);

 44

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      result[k].insert(va - vb);

 45

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      result[k].insert(vb - va);

 46

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      result[k].insert(va * vb);

 47

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      if (va != 0 && vb != 0) { 

 48

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        result[k].insert(va / vb);

 49

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        result[k].insert(vb / va);

 50

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      }  

 51

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    }

 52

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  }

 53

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

 54

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 55

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

inline  bool  isequal_m( double  na)

 56

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

 57

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  const double zero = 1e-9;

 58

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  if (fabs(na - M) < zero) return true;

 59

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  return false;

 60

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

 61

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 62

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

inline  bool  merge_set2(size_t i, size_t j)

 63

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

 64

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (MSETI p = result[i].begin(), pe = result[i].end(); p != pe; ++p) {

 65

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    double va = *p;

 66

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    for (MSETI q = result[j].begin(),qe = result[j].end(); q != qe; ++q) {

 67

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      double vb = *q;

 68

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      if (isequal_m(va + vb)) return true;

 69

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      if (isequal_m(va - vb)) return true;

 70

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      if (isequal_m(vb - va)) return true;

 71

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      if (isequal_m(va * vb)) return true;

 72

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      if (va != 0 && vb != 0) { 

 73

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        if (isequal_m(va / vb)) return true;

 74

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        if (isequal_m(vb / va)) return true; 

 75

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      }  

 76

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    }

 77

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  }

 78

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  return false;

 79

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

 80

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 81

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

bool  calc(size_t step)

 82

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

 83

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

   ++count_func;

 84

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  if (step == 2) {

 85

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    ++count_expr;

 86

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    return merge_set2(num[0], num[1]);

 87

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  }

 88

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  // if (step == 1) {

 89

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    // ++count_expr;

 90

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    // size_t j = (1 << N) - 1;

 91

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    // for (MSETI q = result[j].begin(),qe = result[j].end(); q != qe; ++q) 

 92

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      // if (isequal_m(*q)) return true;

 93

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    // return false;  

 94

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  // }  

 95

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

 96

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  --step;

 97

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  for (size_t i = 0; i < step; i++){

 98

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    for(size_t j = i + 1; j <= step; j++) {

 99

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      size_t na = num[i];

100

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      size_t nb = num[j];

101

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      num[i] = na + nb;

102

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      num[j] = num[step];

103

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      merge_set(na, nb);

104

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      if (calc(step)) return true;

105

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      num[i] = na;

106

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      num[j] = nb;

107

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    }

108

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  }

109

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  return false;  

110

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

111

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

112

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

void  calc_range( int  first,  int  last,  string  filename = " nul " )

113

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

114

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  if (N ==0 || first >= last || filename.empty()) return;

115

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  clock_t ta = clock();

116

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  vector<int> vv(N, first);

117

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  int *end = &vv[N-1], *p = end, *arr = &vv[0];

118

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  ofstream ofs(filename.c_str());

119

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  size_t count = 0;

120

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  size_t count_b = 0;

121

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  while(true){

122

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    ++count_b;

123

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    if (calc_num(arr)) {

124

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      ofs.width(4);

125

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      ofs<<  ++count << "    ";

126

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      for (size_t i = 0; i < N; ++i) { 

127

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        ofs.width(2);        

128

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

        ofs << arr[i]<< " ";

129

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      } 

130

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

      ofs << "\n";

131

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    }  

132

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    while (p >= arr && *p >= last) --p;

133

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    if (p < arr) break;

134

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    int tmp = ++*p;

135

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

    while (p < end) *++p = tmp;

136

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  }

137

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  ofs.close();

138

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  const char sep[] = "/"; 

139

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  cout << "total: " << count << sep << count_b << "\n"

140

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

       << count_expr << "/" << count_func << "\n"

141

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

       << "time:  " << clock() - ta << "\n\n"; 

142

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

143

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

144

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

145

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

int  main()

146

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)
《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

{

147

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  calc_range(1,13,"nul");

148

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

  cin.get();

149

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

}

150

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

151

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

152

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

153

《程式設計之美》讀書筆記22: 1.16 24點遊戲(補充)

轉載于:https://www.cnblogs.com/flyinghearts/archive/2011/03/22/1991978.html