#蓝桥杯算法双周赛入门基础
对于简单的方案和方案次数的数组定义形式,通过max函数来寻找需要的最佳方案,局限性时此题此法只适用于结果较少的问题,例如小桥的蓝桥四季园艺挑战
#问题描述
小桥在蓝桥镇开设了一个四季园艺中心,每个季节都会种植不同的花草。这一季,他挑选了四种花草,分别代表了春夏秋冬四季。每种花草都有一个困难指数A1, A2, A3, A4。小桥想要把这些花草组成不同的园艺套装出售,每个套装至少包含两种不同困难指数的花草,一种花草最多只能出现在一个套装中。你能帮助小桥找出他最多能组成多少个园艺套装吗?
#include <bits/stdc++.h>
using namespace std;
int main()
{
int T; cin >> T;
int a[5], s[11], temp;
while (T--) {
int ans = 0; temp = 0; memset(s, 0, sizeof s);
for (int i = 1; i <= 4; ++i) {
cin >> a[i]; s[a[i]]++;//将次数拆解开
temp = max(temp, s[a[i]]);//对于不同解法寻找较少的方案数
}
if (temp == 1 || temp == 2) ans = 2;
else if (temp == 3) ans = 1;
else ans = 0;
cout << ans << '\n';
}
return 0;
}
#include<bits/stdc++.h> using namespace std; int main() { ios_base :: sync_with_stdio(0); cin.tie(0); cout.tie(0); int t = 1; cin >> t; while (t--) { vector<int> a(4); set<int> s; for (int i = 0; i < 4; i++) { cin >> a[i]; s.insert(a[i]); } sort(a.begin(), a.end()); if (s.size() >= 3) { cout << "2\n"; } else if (s.size() == 1) { cout << "0\n"; } else if (a[1] == a[2]) { cout << "1\n"; } else { cout << "2\n"; } } return 0; }