hdoj 1257
来源:互联网 发布:知乎语录 编辑:程序博客网 时间:2024/06/18 15:11
//贪心:重复求出当前最长的递减子序列,再将该子序列的元素拿出,继续重复求当前最长递减子序列,重复次数即为导弹拦截系统最少套数
//版本1:
#include<iostream>
#include<vector>
using namespace std;
struct D
{
int h;
bool used;
};
int main(void)
{
int n, count, nn,cur;
while (cin>>n)
{
vector<D>a(n);
for (int i = 0; i < n; i++)
{
cin >> a[i].h;
a[i].used = false;
}
nn = n;
count = 0;
while (nn)
{
for (int i = 0; i < n; i++)
{
if (!a[i].used)
{
cur = i;
a[i].used = true;
nn--;
break;
}
}
for (int i = cur + 1; i < n; i++)
{
if (a[i].h <= a[cur].h&&!a[i].used)
{
cur = i;
a[i].used = true;
nn--;
}
}
count++;
}
cout << count << endl;
}
return 0;
}
//改进版
#include<iostream>
using namespace std;
int a[10010];
int main(void)
{
int n, nn,count,cur;
while (cin >> n)
{
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
nn = n;
count = 0;
while (nn)
{
for (int i = 0; i < n; i++)
{
if (a[i])
{
count++;
cur = a[i];
a[i] = 0;
nn--;
for (int j = i + 1; j < n; j++)
{
if ((a[j] <= cur) && a[j])
{
cur = a[j];
a[j] = 0;
nn--;
}
}
}
}
}
cout << count << endl;
}
return 0;
}
//动态规划:实质是求最长严格上升子序列的长度
#include<iostream>
#include<algorithm>
using namespace std;
int a[1010], dp[1010];
int main(void)
{
int n;
int ans;
while (cin >> n)
{
ans= 1;
for (int i = 0; i < n; i++)
{
cin >> a[i];
dp[i] = 1;
for (int j = 0; j < i; j++)
{
if (a[j] < a[i]) dp[i] = max(dp[i], dp[j] + 1);
}
ans = max(ans, dp[i]);
}
cout << ans << endl;
}
return 0;
}
//版本1:
#include<iostream>
#include<vector>
using namespace std;
struct D
{
int h;
bool used;
};
int main(void)
{
int n, count, nn,cur;
while (cin>>n)
{
vector<D>a(n);
for (int i = 0; i < n; i++)
{
cin >> a[i].h;
a[i].used = false;
}
nn = n;
count = 0;
while (nn)
{
for (int i = 0; i < n; i++)
{
if (!a[i].used)
{
cur = i;
a[i].used = true;
nn--;
break;
}
}
for (int i = cur + 1; i < n; i++)
{
if (a[i].h <= a[cur].h&&!a[i].used)
{
cur = i;
a[i].used = true;
nn--;
}
}
count++;
}
cout << count << endl;
}
return 0;
}
//改进版
#include<iostream>
using namespace std;
int a[10010];
int main(void)
{
int n, nn,count,cur;
while (cin >> n)
{
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
nn = n;
count = 0;
while (nn)
{
for (int i = 0; i < n; i++)
{
if (a[i])
{
count++;
cur = a[i];
a[i] = 0;
nn--;
for (int j = i + 1; j < n; j++)
{
if ((a[j] <= cur) && a[j])
{
cur = a[j];
a[j] = 0;
nn--;
}
}
}
}
}
cout << count << endl;
}
return 0;
}
//动态规划:实质是求最长严格上升子序列的长度
#include<iostream>
#include<algorithm>
using namespace std;
int a[1010], dp[1010];
int main(void)
{
int n;
int ans;
while (cin >> n)
{
ans= 1;
for (int i = 0; i < n; i++)
{
cin >> a[i];
dp[i] = 1;
for (int j = 0; j < i; j++)
{
if (a[j] < a[i]) dp[i] = max(dp[i], dp[j] + 1);
}
ans = max(ans, dp[i]);
}
cout << ans << endl;
}
return 0;
}
阅读全文
0 0
- hdoj 1257
- hdoj 1257
- hdoj 1257
- hdoj 1257
- HDOJ 1257
- hdoj 1257
- HDOJ 1257 LIS
- HDOJ
- hdoj
- hdoj
- HDOJ
- hdoj 1257 最少拦截系统
- hdoj 1257 最少拦截系统
- HDoj-1257-最少拦截系统
- HDOJ 最少拦截系统 1257
- HDOJ 1257 最少拦截系统
- HDOJ 1257 最少拦截系统
- hdoj 1257最少拦截系统
- 配置nginx反向代理时,要注意的权限设置
- BZOJ 1741 [Usaco2005 nov]Asteroids 穿越小行星群题解
- 图片水平、垂直居中与父元素的css方法
- 知识_HTuple类型
- Java基础——继承
- hdoj 1257
- numpy里面的argmax函数
- SASS用法指南
- linux 进程调度
- C#对话框 文件路径
- Qt调用jrtplib实现单播、多播和广播
- 开发的应用程序启动不了
- javascript数字插入
- PL/SQL(五):存储过程