hdu2124 Repair the Wall
2011-04-07 14:28
381 查看
没多大意思的水题,题意是说修补屋子的1*n矩形漏洞,给定一些木块用最少的木块修补好裂缝,可使用锯子裁掉多余部分,应该算是简单的贪心算法,从大到小排序后累加,大于就可以跳出循环。。。。
附代码如下:
# include <iostream>
using namespace std;
__int64 a[650];
int cmp(int a, int b)
{
return a>b;
}
int main()
{
__int64 Lack, n;
while (scanf("%I64d %I64d", &Lack, &n) != EOF){
for (int i = 0; i < n; i ++){
scanf("%I64d", &a[i]);
}
sort(a, a+n, cmp);
__int64 sum = 0;
int check = 0;
int counter = 0;
for (int i = 0; i < n; i ++){
if (sum >= Lack){
check = 1;
break;
}
else {
sum += a[i];
counter ++;
}
}
if (sum >= Lack)check = 1;
if (check)printf("%d/n", counter);
else printf("impossible/n");
}
return 0;
}
附代码如下:
# include <iostream>
using namespace std;
__int64 a[650];
int cmp(int a, int b)
{
return a>b;
}
int main()
{
__int64 Lack, n;
while (scanf("%I64d %I64d", &Lack, &n) != EOF){
for (int i = 0; i < n; i ++){
scanf("%I64d", &a[i]);
}
sort(a, a+n, cmp);
__int64 sum = 0;
int check = 0;
int counter = 0;
for (int i = 0; i < n; i ++){
if (sum >= Lack){
check = 1;
break;
}
else {
sum += a[i];
counter ++;
}
}
if (sum >= Lack)check = 1;
if (check)printf("%d/n", counter);
else printf("impossible/n");
}
return 0;
}
相关文章推荐
- HDU 2124 Repair the Wall
- hdu 2124 Repair the Wall
- hdu 2124 Repair the Wall
- hdu 2124 Repair the Wall
- HDU 2124 Repair the Wall
- 【HDU-oj】-2124-Repair the Wall(贪心)
- HDU 2124 Repair the Wall
- hdu 2124 Repair the Wall
- hdu 2124 Repair the Wall
- HDU 2124 Repair the Wall(贪心)
- HDU 2124 Repair the Wall
- hdu 2124 Repair the Wall
- --hdu 2124 Repair the Wall(贪心)
- HDU2124——Repair the Wall(贪心水题)
- HDU2124 Repair the Wall(贪心)
- HDU 2124 Repair the Wall
- HDU(2124)Repair the Wall补墙,贪心
- hdu 2124 Repair the Wall
- hdu 2124 Repair the Wall(修墙)
- hdu 2124 Repair the Wall