zoukankan      html  css  js  c++  java
  • 题解 CF102A 【Clothes】

    本萌新来介绍一种(dfs)思路:

    • 1 如果件数已经$=$3,那么判断,如果符合条件,则更新答案

    • 2 如果件数$<$3,那么枚举(1)~(n),如果该件衣服没被取过,则标记为已取并(dfs)下一件

    Code

    #include<bits/stdc++.h>
    using namespace std;
    	int n,m,money[110],minx=INT_MAX;
    bool p[110][110],f,use[110];
    int s[5];
    bool comp()//判断是否符合条件
    {
    	if(p[s[1]][s[2]] and p[s[1]][s[3]] and p[s[2]][s[3]]) return 1;
    	return 0;
    }
    void dfs(int t,int sum)
    {
    	if(t>3)//件数>3判断
    	{
    		if(comp())
    	    {
    	    	f=1;//标记为有方案
    	    	minx=min(minx,sum);
    		}
    		return;
    	}
    	for(int i=1;i<=n;i++)
    	{
    		if(!use[i])//该件衣服没被取过
    		{
    			s[t]=i;//保存答案编号用于之后判断
    			use[i]=1;//标记为已取
    			dfs(t+1,sum+money[i]);
    			use[i]=0;//回溯
    		}
    	}
    }
    int main()
    {
        cin>>n>>m;
        for(int i=1;i<=n;i++) cin>>money[i];
        for(int i=1;i<=m;i++)
        {
        	int x,y;
        	cin>>x>>y;
        	p[x][y]=1;//建有向图
        	p[y][x]=1;
    	}
        dfs(1,0);
        if(f) cout<<minx;
        else cout<<"-1";
    	return 0;
    }
    
    
  • 相关阅读:
    kernel_size
    pytorch:修改预训练模型
    Python yield使用浅析
    respberry2b + android5.1
    android中调用c++文件并转为so
    图像灰度化
    图像的高斯平滑滤波
    历届试题 分考场
    头发啊头发
    历届试题 合根植物
  • 原文地址:https://www.cnblogs.com/WKAHPM/p/11628908.html
Copyright © 2011-2022 走看看