2 条题解

  • 0
    @ 2023-3-10 21:00:35

    使用贪心策略,搜索方案 整体思路是搜索每一行的最小情况,从小到大搜索,则所输出的必定是最小情况 代码中一些变量含义 f:代表行列数 b[ ]:每行搜索时的已用数标记 c[ ][ ]:每列搜索已用数标记 d[ ]:每一行搜索结果 其余的都能在代码中轻易看出含义

    using namespace std;
    bool b[100];
    bool c[100][100];
    int d[100];
    int f;
    void print ()
    {
    	for (int i=0;i<f;i++)
    	{
    		printf ("%d ",d[i]);
    		c[i][d[i]]=1;
    	}
    	printf ("\n");
    }
    bool check (int i,int num)
    {
    	bool p;
    	if (b[i]==0&&c[num][i+1]==0)
    	p=1;
    	return p;
    }
    void search (int num)
    {
    	for (int i=0;i<f;i++)
    	if (check (i,num)==1)
    	{
    		d[num]=i+1;
    		b[i]=1;
    		if (num==f-1)
    		{
    			print ();
    			break;
    		}
    		else
    		search (num+1);
    		b[i]=0;
    	}
    }
    int main()
    {
    	cin>>f;
    	for (int i=0;i<f;i++)
    	{
    		search (0);
    		for (int j=0;j<=f;j++)
    		b[j]=0;
    	}
    	return 0;
    }
    

    “关注bilibili虚拟主播不知源深喵,关注不知源深谢谢喵”

    信息

    ID
    449
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    67
    已通过
    22
    上传者