关于快读和scanf
查看原帖
关于快读和scanf
303775
FeliksFun楼主2021/1/16 20:55

这个题如果用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;	
}
2021/1/16 20:55
加载中...