1 条题解
-
0
C :
#include<stdio.h> int n,a[1110],k,b[1110]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) { int min=999999,minx,t=0; for(int j=1;j<=k;j++) if(min>b[j]&&b[j]>=a[i]) { min=b[j]; minx=j; t=1; } if(t==0) b[++k]=a[i]; else b[minx]=a[i]; } printf("%d",k); return 0; }
C++ :
#include <iostream> using namespace std; int main() { int n,i,j; int a[1000]; int k;//配备系统的个数 int b[1001] = {0};//每套系统最高拦截高度 int p;//拦截第i颗导弹所使用的当前系统 cin>>n; //输入导弹高度 for(int i = 0;i < n;i++){ cin>>a[i]; } k = 1;//第一套系统 //第一套系统最高拦截的高度是:第一颗导弹的高度 b[k] = a[0]; for(i = 1;i < n;i++){ p = 0;//假设没有系统能拦截当前的导弹 for(j = 1;j <= k;j++) { //如果有能拦截的系统 if(b[j] >= a[i]){ //如果还没有过其他系统拦截 if(p == 0){ p = j;//第j套系统可以拦截 } else if(b[j] < b[p]){ p = j;//使用更小的消耗去拦截 } } } //如果没有导弹能够拦截 if(p == 0){ k++; b[k] = a[i]; } else{ //更新第p个拦截系统的拦截高度 b[p] = a[i]; } } cout<<k<<endl; return 0; }
Python :
n=int(input()) sr=input().split() a=[0 for i in range(n)] for i in range(n): a[i]=int(sr[i]) k=0 k1=[0 for i in range(n)] k1[0]=a[0] for i in range(1,n): f=1 for j in range(k+1): if(a[i]<k1[j]): f=0 break if(f==1): k=k+1 k1[k]=a[i] else: k1[j]=a[i] print(k+1)
- 1
信息
- ID
- 2213
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者