站外题求助(悬关*2)
  • 板块学术版
  • 楼主2011Andy
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/8/6 14:22
  • 上次更新2023/11/3 05:35:47
查看原帖
站外题求助(悬关*2)
660871
2011Andy楼主2023/8/6 14:22

题面: 题目描述 给你 N 张卡牌, 每张卡牌都有一个面值,你可以在其中选出 m 张,你可以把这几张卡牌按照顺序拼到一起,问你这 m 张卡牌能有多少个不同的数字 比如现在你有 4,14,1 这三张卡牌,你可以拼成 4141,4114,1441,1414,1144 这五个数

输入格式 第一行包括两个个整数 n,m。 第二行包括 n个整数,表示每张卡排的面值。 输出格式 输出能拼成的不同数字有多少种 输入输出样例 输入数据

6 4

12 23 13 1 2 3

输出数据

314

提示

卡牌面值最大为 99

本蒟蒻的代码:

#include<bits/stdc++.h>
using namespace std;
int n , m;
int mark[99999999];
int a[15];
int cnt;
void dfs(int x , int sum){
	if(x == m + 1){
		if(!mark[sum]){
//			cout << sum << " ";
			mark[sum] = 1;
			cnt++;
		}
		return ;
	}
	for(int i = 1 ; i <= n ; i++){
		if(a[i] >= 10) dfs(x + 1 , sum * 100 + a[i]);
		else dfs(x + 1 , sum * 10 + a[i]);
	}
}
int main() {
	cin >> n >> m;
	for(int i = 1 ; i <= n ; i++){
		cin >> a[i];
	}
	dfs(1 , 0);
	cout << cnt;
    return 0;
}

样例输出:1060

求各位dalao帮帮笨蒟蒻

2023/8/6 14:22
加载中...