蓝桥杯 买不到的数目(动态规划)

判断一个数i和m,n的大小,如果大于等于任意一个,然后再去判断i-m或i-n是否能够用m,n来表示

因此需要开一个数组,从i=1开始遍历。

然后再倒着从max来找最大不能表示的。

注意这个max是怎么得出来的,1000000可以,100000也可以

#include<iostream>
using namespace std;
//1000000
const int MAX=1000000;
int a[MAX]={0};
int main()
{
    int n,m;
    cin>>n>>m;
    a[0]=1;
    for(int i=1;i<=MAX;i++)
    {
        if(i>=n&&a[i-n])
           a[i]=1;
        else  if(i>=m&&a[i-m])
            a[i]=1;
    }
    int t=0;
    for(int i=MAX;i>=0;i--)
     {
         if(!a[i])
           {
               t=i;
               break;
           }
     }
     cout<<t<<endl;
    return 0;
}
  
原文地址:https://www.cnblogs.com/h694879357/p/14531912.html