穷举

排列组合题可用穷举方法


//两个乒乓球队进行比赛, 各出3人。甲队为A, B, C 3人, 
//乙队为X, Y, Z3人。已抽签决定比赛名单。有人向队员打听比赛的名单, A说他不和X比,
//C说他不和X, Z比, 请编程序找出3对赛手的名单。
//穷举
void match()
{
	for(char a='X';a<='Z';a++)
		for(char b='X';b<='Z';b++)
			for (char c = 'X'; c <= 'Z'; c++)
			{
				if (a != 'X' && c != 'X' && c != 'Z'&&a!=b&&a!=c&&c!=b)
				{
					printf("A->%c,B->%c,C->%c", a, b, c);
				}
			}
}
//在一个陌生的国度,有5种不同的硬币单位:15、23、29、41和67(分)。 
//寻找所有组成18元8分(即1808分)的可能组合。 假定对于所有面值的硬币你都有足够的硬币。
int Fun()
{
	int count = 0;
	for (int i1 = 0; i1 < 1808 / 15; i1++)
	{
		for (int i2 = 0; i2 < 1808 / 23; i2++)
		{
			if (i1 * 15 + i2 * 23 > 1808)
			{
				continue;
			}
			for (int i3 = 0; i3 < 1808 / 29; i3++)
			{
				if (i1 * 15 + i2 * 23 + i3 * 29 > 1808)
				{
					continue;
				}
				for (int i4 = 0; i4 < 1808 / 41; i4++)
				{
					if (i1 * 15 + i2 * 23 + i3 * 29 + i4 * 41 > 1808)
					{
						continue;
					}
					for (int i5 = 0; i5 < 1808 / 67; i5++)
					{
						if (i1 * 15 + i2 * 23 + i3 * 29 + i4 * 41 + i5 * 67 == 1808)
							count++;
						else if (i1 * 15 + i2 * 23 + i3 * 29 + i4 * 41 + i5 * 67 > 1808)
						{
							continue;
						}
					}
				}
			}
		}
	}
	return count;
}
int main()
{
	match();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值