初级守护
http://judge.codingtang.com/problem/1224/
#include<iostream>
using namespace std;
int main()
{
int n=1,tot[10001],j=0;
long long int a[505],t;
while(n!=-1)
{
cin>>n;
if(n==-1)
break;
tot[j]=1;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=1;i<n;i++)
if(a[i]>a[i-1])
{
tot[j]++;
t=a[i-1];
for(int k=i;k<n;k++)
if(a[k]<=t)
{
t=a[k];
a[j]=-1;
}
}
j++;
}
for(int i=0;i<j;i++)
cout<<tot[i]<<endl;
}
我觉得没错!!!
资深守护
int main()
{
while(输入n满足条件)
{
输入卫星高度;
计数器=0;
for(i=1;i<=n;++i)
{
找目前高度大于等于此高度的高度最小卫星;如果没有,新增一套系统;
}
输出计数器;
}
return 0;
}
新手守护
看
#include<iostream>
using namespace std;
int main()
{
定义 a[510],last[510];
定义 n,count;
while(true)
{
输入>>n;
如果(n==-1)
{
break;
}
count=0;
循坏(int i=1;i<=n;i++)
{
输入>>a[i];
}
循坏(int i=1;i<=n; i++)
{
bool flag=false;
循坏(int j=1;j<=count;j++)
{
如果(last[j]>=a[i])
{
last[j]=a[i];
flag=true;
break;
}
}
如果(!flag)
{
last[++count]=a[i];
}
}
输出<<count<<endl;
}
return 0;
}
采纳!!!
修练者
int s[510], last[510]; int n, count; while(true) { cin>>n; if(n == -1) break; count = 0; for(int i=1; i<=n; i++) { cin >> s[i]; } for(int i=1; i<=n; i++) { bool flag = false; for(int j=1; j<=count; j++) { if(last[j] >= s[i]) { last[j] = s[i]; flag = true; break; } } if(!flag) { last[++count] = s[i]; } } cout<<count<<endl; }
中级光能
核心: for(int i=1; i<=n; i++) { cin >> s[i]; } for(int i=1; i<=n; i++) { bool flag = false; for(int j=1; j<=count; j++) { if(last[j] >= s[i]) { last[j] = s[i]; flag = true; break; } }
中级光能
核心: for(int i=1; i<=n; i++) { cin >> s[i]; } for(int i=1; i<=n; i++) { bool flag = false; for(int j=1; j<=count; j++) { if(last[j] >= s[i]) { last[j] = s[i]; flag = true; break; } }