zoukankan      html  css  js  c++  java
  • hdu 1224

    郁闷死啦,一道简单的DP,搞了好几个小时,结果输出错了,反序了,都怪测试例子是三个数,反序了也不知道呀,也怪自己……………………

    #include<iostream>
    #include<string>
    using namespace std;
    int p[105],f[105],dp[105],ans[105];
    bool map[105][105];
    int main()
    {
    	int a,b,n,m,cas,t=0;
    	cin>>cas;
    	while(cas--)
    	{
    		cin>>n;
    		for(int i=1;i<=n;i++)
    			cin>>p[i];
    		p[n+1]=0;
    		memset(map,0,sizeof(map));
    		memset(dp,0,sizeof(dp));
    		cin>>m;
    		for(int i=0;i<m;i++)
    		{
    			cin>>a>>b;
    			map[a][b]=1;
    		}
    		f[1]=-1;
    		for(int i=2;i<=n+1;i++)
    		{
    			for(int j=1;j<i;j++)
    				if(map[j][i]&&p[i]+dp[j]>dp[i])
    				{
    					dp[i]=p[i]+dp[j];
    					f[i]=j;
    				}
    		}
    		int k=n+1,i=0;
    		while(f[k]!=-1) 
    		{
    			ans[i++]=f[k];
    			k=f[k];
    		}
    		if(t++) cout<<endl;
    		cout<<"CASE "<<t<<"#"<<endl<<"points : "<<dp[n+1]<<endl;
    		cout<<"circuit : ";
    		for(int j=i-1;j>=0;j--)
    			cout<<ans[j]<<"->";
    		cout<<1<<endl;
    	}
    	return 0;
    
    }
    
    
    
    
    		
    
    
    
    
  • 相关阅读:
    HTTP客户端
    获取IP地址和域名
    SQL语句、PL/SQL块和SQL*Plus命令之间的区别
    oracle中的游标
    oracle表问题
    精简版web浏览器
    oracle的存储过程
    数据库中的视图
    第一次作业
    折半查找
  • 原文地址:https://www.cnblogs.com/nanke/p/2133139.html
Copyright © 2011-2022 走看看