原程式碼:
錯誤是錯在你的 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 (用途:切換或查看路徑)
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從大陸的某個論壇引用的,所以有一些不太一樣的詞請見諒。
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/>