原程式碼:
錯誤是錯在你的 cou() 在 n!=0 時沒有傳回值,所以不可以用成 ans=cou(n-1)*2;,這樣傳回來的值是未定義的數字。正確的改法如下:
原程式碼:
錯誤是錯在你的 cou() 在 n!=0 時沒有傳回值,所以不可以用成 ans=cou(n-1)*2;,這樣傳回來的值是未定義的數字。正確的改法如下:
我前三題都回答不太出來。
我對 C++ 比較熟,所以就用 C++ 寫給你啦:)
第四題:請寫一個C程式,使用遞迴函數列印出2的n次方式值
第五題:請使用C語言寫出程式來計算下列無窮序列前n項的和, 如:1+1/2根號2+1/3根號3+...
//原題目網址http://tw.knowledge.yahoo.com/question/question?qid=1509090204291
#define PROBLEM 1
//這裡把 1 更改成 2 就會執行第 2 題
#include<iostream>
using namespace std;
#if PROBLEM==1
int main()
{
srand(time(NULL));
float fa,fb;
while(cin>>fa,cin.get(),cin>>fb)
{
int ia=fa*10000,ib=fb*10000;
for(int i=0;i<6;i++)cout<<((rand()*10000+rand())%(ib-ia+1)+ia)*0.0001<<endl;
}
system("pause");
}
#endif
#if PROBLEM==2
※ 使用方式
gcc [option] filename
※ 選項
-c : 只做編譯(不做連結)
-S : 輸出組譯碼
-E : 將預處理結果顯示
-o filename : 指定輸出檔名
-ansi : 程式要求依據ansi c標準
-Dmacro : 使定義巨集(marco)為有效
-Dmarco=defn : 使定義巨集(marco)為defn
-Wa,option : 將選項(option)傳給組譯器
-wl,option : 將選項(option)傳給連結器
-I : 追加include檔案的搜尋路徑
-L : 追加library檔案的搜尋路徑
-l : 指定連結的函式庫
-Wall : 顯示所有的警告訊息
-g : 編入除錯資訊(要使用GDB除錯一定要加)
今天解的兩題題目都是發生這種不爽的情況
就是Zerojudge都過,但是ACM都不過....
有點灰心了.......
算了,先打題目丟一旁吧,去作其他事
//d275: 11586 - Train Tracks
#include<iostream>
#include<sstream>
using namespace std;
void fa(string& sa,string& sb)
{
for(int i=0;2*i+1<sb.size();)
if(sa[0]+sb[2*i+1]=='M'+'F')
{
sa[0]=sb[2*i];
sb.erase(2*i);
sb.erase(2*i);
return fa(sa,sb);
}
else if(sa[1]+sb[2*i]=='M'+'F')
又是一題奇怪的題目了....
在Zerojudge上面是AC (題目請點我)
可是在ACM上面是WA ....
或許是我的功力退步了吧
努力找bug吧
如果有路過的好心人要幫我找錯當然是大大的歡迎喔
//d269: 11579 - Triangle Trouble WA
#include<iostream>
#include<cmath>
using namespace std;
int comp(const void* a,const void* b)//由大到小
{
if(*(double*)a>*(double*)b)return -1;
if(*(double*)a==*(double*)b)return 0;
if(*(double*)a<*(double*)b)return 1;
}
int main()
{
http://luckycat.kshs.kh.edu.tw/homework/q10763.htm
有一個非營利性的國際性機構執行一項國際交換學生計畫。這幾年來執行得相當好,有越來越多的學生想要參與這項計畫,所以現在請你來幫忙這個機構。 每個提出交換學生申請的人有2項資料:他來自哪一國,他想要交換到哪一國。這個計畫只有在每個學生都可以找到一個交換對象的時候才算成功。換句話 說,假如有一個學生想要從A國到B國,那麼一定要有另一個學生從B國到A國。如果只有50個學生提出申請,要判斷這計畫是否可行相當簡單,然而現在最多已 經有 500000 個學生了。 |
一開始我看到這個題目,我馬上想到用規規矩矩的方法,首先程式讀到a學生的兩個數字之後,讓程式去找資料庫,看看有沒有一個b學生剛好想去他的國家,然後將b想去的國家改成a想去的國家,然後在繼續找。如果都找不到,就把這筆資料丟入資料庫。只要最後資料庫還有剩下的資料,就代表配對不成功。
這樣的程式上傳之後是 TLE...於是,我又靈光一現的想到,把所有學生的資料讀完之後,再把兩個數字分別排序,這樣的話只要比較同一個 i 值時兩邊的數字有沒有一樣就好了,我把程式改成用選排之後,上傳的結果還是 TLE...
不得已,只好用現成的qsort函式了,雖然用起來心裡不是很踏實(我沒有背快排的程式碼....)改過之後再傳就 AC 了。
//10763 AC
#include<iostream>
#include<cstdlib>
using namespace std;
int na[1000000];
int comp(const void* a,const void* b)
{
return *(int*)a-*(int*)b;
}
int main()
{
int t1,ia,ib;
我利用解過百分比找到這一題看起來很簡單的題目
可是....明明就很簡單....為什麼會 TLE??
我還試者把 cout 改成 printf...可是結果還是一樣
為什麼??
要怎麼樣才會過勒??
//===============98/06/18
後來終於發現我的英文實在是太破了
他要的是以AaBb....Zz的順序
而且,他要你把重複的刪掉...
要把重複的刪掉其實也很簡單
就是不要跑到重複的就好了
在dfs的下一層判斷條件加上「不可以跟前一次下一層一樣字元」就行
可是...我的程式居然從 TLE 變成 WA ...
找不到哪裡錯= =
在 windows 系統上,C++ 的 system 函數就等同在 cmd 輸入指令,如果你對 cmd 的使用有所涉獵的話,就可以寫一些實用性較高的程式喔!我會陸續打出一些我曾經碰過的用法,若有錯誤請不吝指教,也希望大家分享一下自己的知識喔。
1. system("pause");2. char ca[100]="dir /s";system(ca);3. char* cb="cd /d c:\\"; //跳脫字元system(cb);4. string sa="測試";sa="title "+sa;system(sa.c_str());
3.system函數 - title (用途:更換視窗標題)4.system函數 - dir (用途:檢視檔案)5.system函數 - cd (用途:切換或查看路徑)
這些是剛剛在知識家看到的,發言者是 Dave ( 專家 1 級 ),以後有空再去翻翻。
「
http://www.comp.nus.edu.sg/~stevenha/programming/acmoj.html
這有滿多 acm 的解題提示… (很多題目都是點一下,告訴你這是什麼種類的問題,你大概就會了)
"Ad Hoc" 代表,沒什麼演算法,就隨便寫隨便過
"Simulation" 通常代表就忠實的模擬它問題裡的問題,就可得到正確答案
"DP" Dynamic Programming (不懂?代表你得去找找 Dynamic Programming 的資料,這題才比較有希望可以解)
"Backtracking" 一樣…
」
ACM-608 Counterfeit Dollar
內容:
Sally 有一打銀幣(十二個),可是只有11個是真的,有一個是假的(但是它的顏色和大小都和真的一樣)。還好那個假幣的重量和真的不一樣,不過 sally 不知道它到底是比真的輕還是重。
可喜的是, sally 有個朋友借他一個非常精準的天平,那個朋友同意讓 Sally 秤三次來找出假幣。例如,秤2個硬幣,結果天平平衡,那麼這2個都是真的。如果用其中的一個真的和第三個硬幣去秤,如果天平不平衡,那麼 sally就知道第三個硬幣是假的。同時他也可以根據天平來判斷那個假的到底是比真的輕還是重。Sally 會小心的選擇秤重的方法,這樣他才能用剛好秤三次找出那個硬幣是假的。輸入說明:
輸入的第一列有一個整數 n,代表以下有幾組測試資料。
每組測試資料三列,每列代表一次秤重。Sally 把他的硬幣編號為A~L。每次秤重左右兩邊的硬幣用2個字串表示(Sally 總是在左右兩邊放相同數目的硬幣),秤重的結果用 up, down, even 來表示,代表天平的右邊是往上,往下,還是平衡。請參考Sample Input。
輸出說明:
範例輸入:
2
ABCD EFGH even
ABCI EFJK up
ABIJ EFGH even
ABC DEF up
把他轉成LIS 是因為要追求O(nlogn)的速度
作法:
設有序列A,B。
記序列A中各個元素在B 中的位子(降序排列)
然後按在A中的位置依序列出
出按後求A的最長遞增子序列
例如:有A={a,b,a,c,x},B={b,a,a,b,c,a}
則有 a = {6,3,2} , b = {4,1} , c = {5} , x = / ;(注意降序排列)
然後按A中的次序排出
{ a(6,3,2) , b(4,1) , a(6,3,2) , c(5) , x( ) } = { 6,3,2,4,1,6,3,2,5 };
對此序列求最長遞增子序列即可~~
在得知了補考4科都過了以後
心中懸著的一顆石頭
終於放下了
至少
不用付那昂貴的學分費
貴死人的學分費
我知道我成績不是很好
2/19號就快要來了
水落石出的日子
說不清心中的感覺 是排拒 還是期待?
交大資工不知道是不是一個夢?
希望不是只能在中興!
#define PRO 1
//http://tw.knowledge.yahoo.com/question/question?qid=1509021006091
/*
1. 搜尋失竊車輛的車牌資料
假設:失竊車輛的號碼為AA0000、FF8888、BB1111、CC9999、DD4444
執行結果:
請輸入車牌號碼
AA4444
無相符號碼,不是失竊車輛
失竊車輛查詢系統
AA0000
資料吻合!此車牌可能為失竊車輛
*/
#if PRO==1
#include
#define NUM 5
using namespace std;
從大陸的某個論壇引用的,所以有一些不太一樣的詞請見諒。
1.題庫與網站資源
題庫-在線提交系統(Online Judge)簡介
下面是幾個比較大的在線提交系統(Online Judge)裡面有大量歷年的競賽題目,一般都是註冊一個ID,然後用自己熟悉的語言(如Pascal/C/C++/Java)寫好原始碼上傳即可,通常網站會即時返回信息告訴你是否正確。 系統裡有一套標準的輸入輸出數據(對外保密,而且通常數據很多很怪),你的程式的輸出和標準輸出完全符合即可。
常見的返回信息有AC(Accepted,通過)、WA(Wrong Answer,輸出有錯誤)、TLE(Time Limit Exceeded,超時)、MLE(Memory Limit Exceeded,內存溢出)、RE(Runtime Error,發生實時錯誤)等,只有AC了才算做對一題。
這裡只是一個簡要介紹,請大家在做題時先看看各網站上的FAQ,Enjoy it!
北京大學Online Judge(POJ)
http://acm.pku.edu.cn/JudgeOnline/>
建立較晚,但題目加得很快,現在題數和ZOJ不相上下,特點是舉行在線比賽比較多,數據比ZOJ上的要弱,有時候同樣的題同樣的程序,在ZOJ上WA,在 POJ上就能AC。 不過感覺比pku的題目要難很多。這個題庫的一大特點就是Online Judge功能強大,其實pku現在已經是中國最好的ACM網站。
浙江大學Online Judge(ZOJ)
http://acm.zju.edu.cn>
國內最早也是最有名氣的OJ,有很多高手在上面做題。打開速度快。
西班牙Valladolid大學Online Judge(UVA)
http://acm.uva.es/>
世界上最大最有名的OJ,題目巨多而且巨雜,數據也很刁鑽,全世界的頂尖高手都在上面。據說如果你能在UVA上AC一千道題以上,就儘管向IBM、微軟什麼的發簡歷吧,絕對不會讓你失望的。
俄羅斯Ural立大學Online Judge(URAL)
http://acm.timus.ru/>
也是一個老牌的OJ,題目不多,但題題經典,我在高中的時候就在這上面做題的。
俄羅斯薩拉托夫國立大學(Saratov State University)(SGU)
http://acm.sgu.ru/>
這是在電研社版找到的題目,不要問我tpsc是啥,謝謝。
Problem 2 宴會
一個龐大公司的董事長即將為他的長子舉辦婚禮,因此宴請了他公司中所有的員工參加這一場婚禮的慶祝會,但是該公司的員工全都有一種怪癖,就是他們不願意跟自己的直屬上司一起參加宴會(但是他們願意跟直屬上司的直屬上司一起參加)。或許是這世界人口太多,總讓人與人之間異常冷漠。
你現在是承辦這一場慶祝會的餐廳老闆,十分的精打細算,恰巧得知了這家公司的員工全部都有這種怪癖,又獲得了這家公司所有員工的名單,正暗自欣喜不已,你將要計算出至少要準備多少人份的餐點(不可以讓來的人吃不夠)來舉辦這一個宴會,準確的估計最多的出席人數才能為你帶來最多的利潤。
輸入及輸出範例:
輸入檔第一行將是一個整數N,告訴你這一家公司總共有N個員工,我們索性將員工編號,從1到N。從接下來的N行也各是一個整數,是每個員工的直屬上司編號(直屬上司至多一個人),沒有直屬上司的就是0,假定這N行中的第5行(就是輸入檔的第六行)是3,代表編號3號的員工是編號5號員工的上司。輸出僅需將最多出席的員工人數輸出成一行。
範例輸入檔一:
5
0
0
1
3
3
範例輸出檔一:
4
範例輸出檔二:
5