出自《國際大學生程序設計競賽例題解》……
chead.h
#include <stdio.h> #include <stdlib.h> #define MAXNUM 502 #define MARKPOS 501 #define ENDMARK MAXNUM+1 int succ[MAXNUM][MAXNUM]={0}; //存放每種藥的後續藥 int med[MAXNUM]={0}; //存放藥方中的藥 void FillNext(int,int,int); void OutPut(int [],int); void ChangeNode(int,int);
cfile.c
#include "head.h" /*START:著名醫生的藥方*/ int main(void) { int i,n,p; int tmpint; char tmpch; scanf("%d%*c",&n); //藥的總數 for(i=1;i<=n;i++) succ[i][0]=ENDMARK; for(i=1;i<=n;) //輸入第i種藥的後續藥 { scanf("%d%c",&tmpint,&tmpch); //tmpint爲第i號藥的後續 succ[i][tmpint]=succ[i][0]; //所有後續藥形成單鏈表,0單元爲頭指針 succ[i][0]=tmpint; if(tmpch=='/n') i++; } for(i=1;i<=n;i++) succ[MARKPOS][i]=0; //0代表可以用 scanf("%d",&p); //該藥方中藥的數目 for(i=1;i<=p;i++) //輸入該藥方 { scanf("%d",&tmpint); //tmpint爲該藥方的第幾號藥 med[i]=tmpint; succ[MARKPOS][tmpint]=ENDMARK; //標記第med[i]號藥已被填寫 } for(i=0;i<=n;i++) //爲了從med[0]開始查找合理序列 succ[0][i]=i+1; //所有藥都是0號藥的後續藥 succ[0][n]=ENDMARK; FillNext(0,p,n); //主函數 return EXIT_SUCCESS; } /*END*/ /*START:該函數用於填寫下一個藥方*/ void FillNext(int curp,int last,int n) { int next=curp+1; int curnode=med[curp]; int succp=succ[curnode][0]; //succp爲第curp種藥的後續藥鏈表的開始 if(curp==last) { OutPut(med,last); //若已填完,則輸出 return; } if(med[next]!=0) //next已填寫,則查看curp是否填寫正確 { if(succ[curnode][med[next]]==0) //若是在,則必不爲0 return; ChangeNode(curnode,1); FillNext(next,last,n); //若在則調用 ChangeNode(curnode,-1); } else //next未填寫,遍歷curnode的後續序列,填給next { while(succp!=ENDMARK) { if(succ[MARKPOS][succp]==0) //找到合適的 { med[next]=succp; //填給next succ[MARKPOS][succp]=1; ChangeNode(curnode,1); FillNext(next,last,n); ChangeNode(curnode,-1); succ[MARKPOS][succp]=0; } succp=succ[curnode][succp]; } med[next]=0; }//else } /*END*/ /*START:輸出合格序列*/ void OutPut(int med[],int last) { int i=1; for(i=1;i<=last;i++) printf("%d ",med[i]); printf("/n"); return; } /*END*/ /*START:將結點的填寫狀態從status1到status2*/ void ChangeNode(int curnode,int std) { int succp=succ[curnode][0]; if(curnode==0) return; while(succp!=ENDMARK) { succ[MARKPOS][succp]+=std; succp=succ[curnode][succp]; } } /*END*/
花了一天時間啊~~~寫得暈乎乎的……
不寫解題報告了……
-> 在c語言中是什麼意思?檢舉->在C語言中稱爲間接引用運算符,是二目運算符,優先級同成員運算符“.”。 用法: p->a,其中p是指向一個結構體的指針,a是這個結構體類型的一個成員。表達式p->a引用了指針p指向的結構體的成員a。 例
一、前言 用ffmpeg做音視頻保存到mp4文件,都會遇到一個問題,尤其是在視頻監控行業,就是監控攝像頭設置的音頻是PCM/G711A/G711U,解碼後對應的格式是pcm_s16be/pcm_alaw/pcm_mulaw,將這個原始的音頻
今天看discuz源碼,在一個函數裏發現這麼個語句: http:// $output && print($ret); 其中$output是這個函數的一個參數,值爲true或false;$ret是一個字符串. 測試了一下,如果$output
將拼接的Sql查詢字串查詢結果賦值給變量@name。 DECLARE @sqlstr VARCHAR(500) DECLARE @name VARCHAR(500) SET @sqlstr='SELECT @nam
Converts the value of the current DateTime object to its equivalent string representation using the specified format.
cvCloneImage()每次使用時編譯器會分配新的內存空間,不會覆蓋以前的內容,所以如果在循環中使用內存會迅速減小,每次用完都需要用cvRelease來釋放。解決方法是使用cvCopy函數代替。cvCopy(pSrcImg,pImg,
關於UCS-2編碼就不多說了,Google一下就大把大把的了 直接上代碼 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .386 .model flat , stdcall option
1)、類型比較和轉換問題 short和int類型之間直接比較或轉換都會出現內存錯誤;2)、判斷文件是否結束時,可能存在回車換行文件並沒真正介紹而內容已經結束了,需要用while (!feof(fp_signal_sort) && (fsc
養生需知:世上最健康的作息時間 7:30:起牀。英國威斯敏斯特大學的研究人員發現,那些在早上5:22―7:21 分起牀的人,其血液中有一種能引起心臟病的物質含量較高,因此,在7:21之後起牀對身體健康更加有益。 7:30―8:00:
hutchin 發表於 2006/10/31, 4:34 PM. 學習 用正則表達式突出顯示字符串中查詢到的單詞的函數<%'''''Function hs(aa,bb) ''建立函數hs,兩值:aa爲內容,bb爲需要查詢的字符Dim re
id="I7" marginwidth="0" marginheight="0" src="http://www.bookeba.cn/securi
1. Java Javasoft: http://www.javasoft.com Sun: www.sun.com Developer.com: http://java.developer.com Tutorial: http://
1. Linux下面 預防與檢測:使用smartmontools工具,用來控制SMART 檢測: 1)用badblocks工具檢測壞塊 #sudo badblock -s -v -c 64 /dev/sda 1000 10 (1000是結
配置: 1.下載jdk-6u7-windows-i586-p.exe並安裝(E:/Java/jdk1.6.0_07) 2.配置環境變量 JAVA_HOME E:/Java/jdk1.6.0_07 PATH %J
homemdbdistinguishednamecountrycodecnlastlogoffmailnicknamedscorepropagationdatamsexchhomeservernamemsexchmailboxsecuri