UVA1592解題報告

2021-08-01 07:15:54 字數 1467 閱讀 8498

這道題讓我費了我好幾天的時間,差不多打掉了我對演算法的全部信心。不過,幸好,經過幾天的努力我終於ac了這道題,解開了我的乙個大心結。

下面我將列出三份**,其中後兩份是wa**用來給同樣wa的同伴提供點思路,看看是否犯了同樣的錯誤。

首先給出的是ac**,思路如下

將題目抽象知,給出乙個m行n列的資料庫,要求給出是否存在兩行有兩列相同。

由於字串的操作過於繁瑣容易超限,所以先進行編號。

編完號後我們手中的表就剩下一串數字,接下來就是對這一串資料的操作。要求是兩行的兩列相同,所以我們可以列舉所有列的組合並從上往下掃瞄各行。

ac** time 1.7s

#include#include#include#include#include#includeusing namespace std;

int row,col,ans,ok;

const int maxn=100;

char table[maxn];

int code[10010][15];

int a,b,c,d;

typedef pairp;

mapid;

void convert(int r)

c++; s="";

}else s+=p;

}}void judge()

else m[p]=r;}}

}}int main()

judge();

if(ok)

else printf("yes\n");

}return 0;

}

錯誤演算法:

沒有編號,從上到下掃瞄行,如果有兩列相同的則ok=1,退出

**如下

#include#include#include#include#includeusing namespace std;

const int maxn=100;

char table[maxn];

int row,col;

int ok;

int r1,r2,c[2];

void judge(int r,map*m)

else

s="";

}else

}if(ans==2) ok=1;

}int main()

c++; s="";

}else s+=p;

}}void judge()

else m[p]=r;}}

}}int main()

m.clear();

judge();

if(ok)

else printf("yes\n");

}return 0;

}

錯誤原因:不能確定是不是兩列

錯誤資料:

2 31,2,3

1,3,5

正確答案:yes

UVa 755 487 3279解題報告

第一道超時題目,資料量太大達到100000,如果要乙個乙個手動模擬比較,肯定會超時。看了別人的 都是用到了stl的map容器。果然是神器,如果不用map還真不知道怎麼在3秒內輸出結果。用了map是1秒多。很清晰,就沒寫注釋。include include include include includ...

uva839解題報告

題目大意就是根據幹槓平衡原理,判斷題目所給出的資料組成的天平能否平衡。注意,此天平可能包含子天平。輸入時,如果w為0,則表示包含子天平,子天平按照先左後右的方法輸入。解題思路 這是二叉樹的問題,資料的輸入就好比先序遍歷。判斷有無子節點就是判斷w是否為0 本題需要思考兩點 第乙個如何判斷子天平平和 第...

UVA540解題報告

挺簡單的一道模擬題,用來做stl或資料結構的練習題還是不錯的。注意的是這次用到了不止乙個佇列而是1000個,還有就是同乙個隊的要編號。附上ac time 30ms include include includeusing namespace std const int maxn 1000 10 ch...