循環多少次?
如果代碼中出現
for(i=1;i<=n;i++) OP ;
那麼做了n次OP運算,如果代碼中出現
fori=1;i<=n; i++)
for(j=i+1;j<=n; j++) OP;
那麼做了n*(n-1)/2 次OP 操作。
現在給你已知有m層for循環操作,且每次for中變量的起始值是上一個變量的起始值+1(第一個變量的起始值是1),終止值都是一個輸入的n,問最後OP有總共多少計算量。
</pre><pre name="code" class="cpp">#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int dp[2005][2005];
int main()
{
memset(dp,0,sizeof(dp));
for(int i=1;i<=2002;i++)
{
dp[1][i]=0;
dp[i][1]=i%1007;
}
for(int i=2;i<=2002;i++)
{
for(int j=2;j<=2002;j++)
{
dp[i][j]=(dp[i-1][j]%1007+dp[i-1][j-1]%1007)%1007;
}
}
int T;
scanf("%d",&T);
while(T--)
{
int n,m;
scanf("%d%d",&m,&n);
printf("%d\n",dp[n][m]);
}
return 0;
}