問題:給4個1-10的數字,通過加減乘除,得到數字為24就算勝利。輸入:4個1-10的數字;輸出:true or false;
方法一 暴力搜尋
#include #include #include #include using namespace std;
void cal(double re[6], double a, double b)
bool is24points(double a, double b)
} return false;
}void calthree(double re[108], double a, double b, double c)
} cal(fi, a, c);
for (i = 0; i < 6; ++i)
} cal(fi, b, c);
for (i = 0; i < 6; ++i) }}
bool game24points(int a, int b, int c, int d)
calthree(re, a, c, d);
for (i = 0; i < 108; i++)
calthree(re, a, b, d);
for (i = 0; i < 108; i++)
calthree(re, a, b, c);
for (i = 0; i < 108; i++)
return false;
}int main()
方法二 遞迴回溯
#include #include #include #include #include #include const double eps = 1e-6;
double s[4] = ;
bool process(int n)
double a, b;
int i, j;
for (i = 0; i < n; i++)
for (j = i + 1; j < n; j++)
if (a != 0)
s[i] = a;
s[j] = b;
} return false;
}bool game24points(int a, int b, int c, int d)
int main()
問題:乙個字串可以由某個長度為k的字串重複多次得到,稱該串以k為週期。編寫程式求週期,例如,abcabcabcabc以3為週期。
#include int getminperiod(char *inputstring)
if (j == len - i)
}return result;
}int main()
問題:給定乙個字串,將字串中所有和前面重複多餘的字元刪除,其餘字元保留,輸出處理後的字串。需保證字元順序,並區分大小寫。
#include #include int getresult(const char *input, char *output)
*output = '\0';
return 0;
}int main()
問題:西洋棋中任意兩個皇后都不能處於同一行、同一列或同一斜線上。把n個皇后放在棋盤(n×n) 上,求
放置n 皇后方案的個數。
#include #include #include static int g_table[20] = ;
bool find(int row, int col)
return true;
}void place(int row, int n, int *count)
for (int col = 1; col <= n; col++) }}
int placequeenmethodnum(int n)
int main()
問題:請設計乙個程式,使其可以計算100以內的數的階乘,結果用字串的形式輸出。
#include using namespace std;
void calcnn(int n, char *pout)
} }char *p = pout;
for (i = len; i >= 0; --i)
*p = '\0';
return;
}int main()
問題:實現乙個物件管理器,可以插入,查詢,刪除。插入要求首先判斷是否已經有相同物件存在,刪除操作可以通過萬用字元進行批量刪除;
#include #include using std::set;
using std::vector;
class myobj
myobj(unsigned int key1,unsigned int key2,unsigned int key3):
key1(key1),key2(key2),key3(key3) {}
bool operator < (const myobj& a) const
bool operator == (const myobj& a) const else
}public:
unsigned int key1;
unsigned int key2;
unsigned int key3;
};static setg_myobj;
int addobject (unsigned int key1, unsigned int key2, unsigned int key3)
void deleteobject (unsigned int key1, unsigned int key2, unsigned int key3)
for(int i = 0; i < ve.size(); ++i)
return ;
}int isobjectexist (unsigned int key1, unsigned int key2, unsigned int key3)
void clear(void)
問題:刪除單鏈表中重複的節點,刪除重複不是保留乙個,而是都刪除,剩餘節點逆序輸出,輸出節點除了首節點外其它需自己重新開闢記憶體。
#include #include #include #include #include "oj.h"
using std::map;
using std::vector;
using std::reverse;
int ichanprocess(strnode * pstrin, strnode * pstrout)
p = pstrin;
while (p != null)
p = pstrin;
vectorve;
while (p != null)
p = p->pstrnext;
} reverse(ve.begin(), ve.end());
for (unsigned int i = 0; i < ve.size() - 1; ++i)
ve[ve.size() - 1] = null;
pstrout->data = ve[0]->data;
pstrout->pstrnext = ve[0]->pstrnext;
free(ve[0]);
return 0;
}void vfreechan(strnode * pstrchan)
return;
}
程式設計小練習
檔名稱 test.cpp 完成日期 2016年4月11日 問題描述 ip位址 在日常網路環境中,基本是都在使用b,c兩大類位址,而ade這3類位址都不打可能被使用到。include using namespace std class ip ip位址共4位元組,或者看成結構體所指4部分 unsigne...
程式設計小練習
檔名稱 test.cpp 完成日期 2016年4月11日 問題描述 設計乙個 類,要有 名 威力。在上週的遊戲角色類role基礎上擴充,為每個角色建立乙個 並在攻擊 attack 行為發生時,在其中起作用。include using namespace std class weapon weapon...
程式設計小練習
專案 警察和廚師 1 根據下面的類圖,定義各個類 要求 各個成員函式,只要輸出相關的資訊即可,暫不深究其業務功能 請為各個類增加建構函式 在實現中,可以增加需要的其他函式 自行編制main函式,完成初步的測試 include using namespace std class person priv...