题目描述:
最小符合要求的永远为0;
最大满足要求的:
当n<3,一定没有满足要求的房子,输出0,
当k小于等于1,一定没有,输出0
当k大于1,小于等于n/2,满足要求的为k-1(两个有人住的房子之间),输出k-1
当k大于n/2,剩下的房间都满足,输出n-k
#include<iostream>
#include<vector>
using namespace std;
int callmax(int n, int k)
{
if (n < 3)
return 0;
if (k <= 1)
return 0;
else if (k <= n / 2)
return k-1;
else if (k <= n)
return n - k;
else
return 0;
}
int main()
{
int num, min=0;
cin >> num;
vector<int>mymax;
for (int i = 0; i < num; i++)
{
int n, k;
cin >> n;
cin >> k;
mymax.push_back(callmax(n, k));
}
for (int i = 0; i < num;i++)
cout << min << " " << mymax[i] << endl;
return 0;
}
本文介绍了一个关于房子分布的算法问题,探讨了如何根据房间总数和有人居住的房间数来确定最大和最小满足特定条件的房子数量。通过具体的编程实现,详细解释了算法的逻辑和边界条件处理。
971

被折叠的 条评论
为什么被折叠?



