为什么第二层循环正序逆序都能过?
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,m;
ll a[30],b[30];
ll dp[30][210];
void init()
{
memset(dp,0x7f,sizeof(dp));
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>a[i]>>b[i];
dp[i][0]=0;
}
dp[0][0]=0;
}
int main()
{
init();
for(int i=1;i<=m;i++)
{
for(int j=n;j>=0;j--)
{
for(int k=0;k<=j;k++)
{
dp[i][j]=min(dp[i][j],dp[i-1][j-k]+a[i]*(ll)pow((double)k,(double)b[i]));
}
}
}
cout<<dp[m][n];
return 0;
}