这个题如果用scanf读入数据的话就会出问题而用上快读便不会,它们两个在这里有什么区别吗? (代码如下,改为快读后ac)
#include<iostream>
#include<cstdio>
using namespace std;
int F,V;
int val[101][101],dp[101][101],pre[101][101];
//dp[i][j]=max(dp[i-1][k]+val[i][j],dp[i][j])
void outway(int i,int k){
if(i==1) printf("%d ",k);
else{
outway(i-1,pre[i][k]);
printf("%d ",k);
}
}
int main()
{
scanf("%d%d",&F,&V);
for(int i=1;i<=F;i++){
for(int j=1;j<=V;j++){
scanf("%d",&val[i][j]);
}
}
for(int i=1;i<=V-F;i++){
dp[1][i]=val[1][i];
pre[1][i]=i;
}
for(int i=2;i<=F;i++){
for(int j=i;j<=V-F+i;j++){
for(int k=1;k<j;k++){
if(dp[i-1][k]+val[i][j]>dp[i][j])
{
dp[i][j]=dp[i-1][k]+val[i][j];
pre[i][j]=k;
}
}
}
}
int ans=-0xfffff,dd;
for(int i=F;i<=V;i++){
if(dp[F][i]>ans){
ans=dp[F][i];
dd=i;
}
}
cout<<ans<<endl;
outway(F,dd);
return 0;
}