i+j+k=p, 0<i<=j<k, 經過解不等式,能夠獲得:i<p/3, j<p/2。html
測試用例:120,3;12,1ios
http://www.javashuo.com/article/p-xhjquips-bb.html數組
https://blog.csdn.net/weixin_40790474/article/details/79354757post
http://www.javashuo.com/article/p-dkztjwew-bd.html測試
題目描述:url
一個矩陣,5*5,取相鄰(二個成員有一個邊是相同的)的6個,輸入一個6個成員列表,判斷是否知足?spa
矩陣成員以下:.net
[[1,2,3,4,5],code
[11,12,13,14,15],htm
[21,22,23,24,25],
[31,32,33,34,35],
[41,42,43,44,45]].
輸入描述:
包含6個矩陣成員數組,如:1,2,3,4,5,11以一個空格分隔,支持多行
1,2,3,4,5,11
1,2,11,14,25,15
輸出描述:
知足輸出1,不然輸出0,每一行輸入一個輸出
1
0
備註:
輸入沒有合法判斷,每一個成員不重複。
思路分析:
利用並查集實現。設定一個長度爲6的數組,其中每一個成員單獨成組,接下來判斷兩兩是否相鄰,若相鄰則合併爲一組。最後判斷是否存在孤立的組,如有則輸出0,不然輸出1。
經過20%:
#include"iostream" #include"vector" #include"algorithm" using namespace std; int main() { while (cin) { vector<int> input; for (int i = 0; i < 6; ++i) { int temp; cin >> temp; input.push_back(temp); } sort(input.begin(), input.end()); if (input[5] > 45||input[0]<1)//0~45範圍判斷 cout << 0 << endl; int flag = 0; for (int i = 1; i < 6; ++i) { if (input[i] - input[i - 1]>1 && flag == 0) { if (input[i] - input[i - 1] != 6) { cout << 0 << endl; flag = 2; } else flag = 1; } else if (input[i] - input[i - 1]>1 && flag == 1) { cout << 0 << endl; flag++; } } if (flag == 1) cout << 1 << endl; } }