洛谷题解 B3621,B3622,B3623(DFS)

慈云数据 2024-03-15 技术支持 67 0

目录

  • 1.B3621 枚举元组
  • 2.B3622 枚举子集
  • 3.B3623 枚举排列

    1.B3621 枚举元组

    枚举元组

    洛谷题解 B3621,B3622,B3623(DFS)
    (图片来源网络,侵删)

    题目描述

    n n n 元组是指由 n n n 个元素组成的序列。例如 ( 1 , 1 , 2 ) (1,1,2) (1,1,2) 是一个三元组、 ( 233 , 254 , 277 , 123 ) (233,254,277,123) (233,254,277,123) 是一个四元组。

    给定 n n n 和 k k k,请按字典序输出全体 n n n 元组,其中元组内的元素是在 [ 1 , k ] [1, k] [1,k] 之间的整数。

    「字典序」是指:优先按照第一个元素从小到大的顺序,若第一个元素相同,则按第二个元素从小到大……依此类推。详情参考样例数据

    洛谷题解 B3621,B3622,B3623(DFS)
    (图片来源网络,侵删)

    输入格式

    仅一行,两个正整数 n , k n, k n,k。

    输出格式

    若干行,每行表示一个元组。元组内的元素用空格隔开。

    样例 #1

    样例输入 #1

    2 3
    

    样例输出 #1

    1 1
    1 2
    1 3
    2 1
    2 2
    2 3
    3 1
    3 2
    3 3
    

    样例 #2

    样例输入 #2

    3 3
    

    样例输出 #2

    1 1 1
    1 1 2
    1 1 3
    1 2 1
    1 2 2
    1 2 3
    1 3 1
    1 3 2
    1 3 3
    2 1 1
    2 1 2
    2 1 3
    2 2 1
    2 2 2
    2 2 3
    2 3 1
    2 3 2
    2 3 3
    3 1 1
    3 1 2
    3 1 3
    3 2 1
    3 2 2
    3 2 3
    3 3 1
    3 3 2
    3 3 3
    

    提示

    对于 100 % 100\% 100% 的数据,有 n ≤ 5 , k ≤ 4 n\leq 5, k\leq 4 n≤5,k≤4。

    #include
    #include
    using NAMEspace std;
    int main()
    {
        int n,k;  
        cin>;>n>>k; 
        if(n==1)
        {
            for(int i=1;i
                cout
            for(int i=1;i
            for(int i=1;i
            for(int i=1;i
            for(int i=1;i
    	if(step==n)
    	{
    		for(int i=0;i
    	scanf("%d",&n);
    	dfs(0);
    	return 0;
    	
    	
    }
    
    	if(step==k+1)
    	{
    		for(int i=1;i
    		if(b[i]==0)
    		{
    			a[step]=i;
    			b[i]=1;
    			dfs(step+1);
    			b[i]=0;
    		}
    	}
    }
    int main()
    {
    	scanf("%d%d",&n,&k);
    	dfs(1);
    	return 0;
    	 
    }
    
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon