1、直角三角形個數
華為筆試:直角三角形個數
i+j+k=p, 0<i<=j<k, 通過解不等式,可以得到:i<p/3, j<p/2。
測試用例:120,3;12,1
https://www.cnblogs.com/joelwang/p/11426533.html
https://blog.csdn.net/weixin_40790474/article/details/79354757
2、矩陣相鄰判斷
https://www.cnblogs.com/LJ-LJ/p/11455415.html
題目描述:
一個矩陣,5*5,取相鄰(二個成員有一個邊是相同的)的6個,輸入一個6個成員列表,判斷是否滿足?
矩陣成員如下:
[[1,2,3,4,5],
[11,12,13,14,15],
[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; } }