資源簡介
在1、2、3...9(保持這個順序)之間可任意放+或者-或者不放,使其結果等于100,輸出所有可能的放法。用c語言編寫。
代碼片段和文件信息
//
//??main.c
//??equal100
//
//??Created?by?Tong?Tingting?on?13-12-20.
//??Copyright?(c)?2013年?Tong?Tingting.?All?rights?reserved.
//
#include?
#include?
#include?
char?sarr[9]={‘1‘‘2‘‘3‘‘4‘‘5‘‘6‘‘7‘‘8‘‘9‘};
#define?Line?8??? //數字中間的間隔數總共可以添加3種運算符
#define?MAXC?3??? //總共可以添加3種運算符
void?MatCombin(char?(*)[3]int?char?*);
char?strout[Line];??//9個數字之間運算符的排列組合
char?mixx[2*Line+1];??//數字和運算符交叉結合后的字符串
int?main?(){
????int?i;
????char?mat[Line][MAXC]?={“+-?““+-?““+-?““+-?““+-?““+-?““+-?““+-?“};??//每個間隔可以選取的運算符
????MatCombin(mat?Line?strout);
????void?mix(char?*achar?*b);
????void?cal(char?*strm);
????exit?(0);
}
//遞歸地進行組合對8個間隔位置上的運算符進行枚舉
void?MatCombin(char(*p)[MAXC]int?nchar?*q){
????int?i;
????//這個p對應最后一行,考慮輸出
????if?(n==1)?{
????????for?(i=0;?i ????????????if(!p[0][i])?return;
????????????*q?=?p[0][i];?//最后一個字符寫入到strout
????????????mix(sarr?strout);
????????}
????????
????}
????//不是最后一行,繼續細分
????else?{
????????for?(i=0;?i ????????????if(!p[0][i])?return;
????????????*q?=?p[0][i];?//寫入一個字符
????????????MatCombin(p+1n-1q+1);
????????}
????}
????
????
????return?;
}
void?mix(char?*achar?*b)??//數字和運算符交叉連接
{
????int?ilenth=0;
????for?(i=0;?i<9;?i++)?{
- 上一篇:數據機構課設--鏈表
- 下一篇:C語言戰爭模擬器源碼
評論
共有 條評論