P1011 [NOIP1998 提高组] 车站
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,n,m,x;
cin>>a>>n>>m>>x;
int j[100];//**代表每一站的净上车人数**
int s[100];**s数组代表每一站的上下乘客后的车上的总人数**
int u[100];**u代表每一站的上车人数**
j[1]=a;
j[2]=0;
u[1]=a;
s[1]=a;
s[2]=a;
for(int i=0;i<=100;i++)//**由j,s,u的关系可知一旦知道第二站上下车的人数,问题便迎刃而解,即u[2]的值,对u【2】的值进行枚举**
{
u[2]=i;
for(int k=3;k<n;k++)
{
u[k]=u[k-2]+u[k-1];
j[k]=u[k-2];
s[k]=s[k-1]+j[k];
}
s[n]=s[n-1];
if (s[n-1]==m) break ;//当最后下车总数等于题目给出的值时,我们找到了正确的u[2]
}
cout<<s[x];
}