简介本文简单谈谈C++算法思维之穷举思维,感兴趣的朋友可以参考一下。

问题1:

百钱问题:将一元人民币换成1、2、5分的硬币,共有多少种换法?

实现:

#include <iostream>
using namespace std;
int main(void)
{
	int nSum = 0;
	int i = 0;
	int j = 0;
	// 5分情况
	for (i = 0; i <= 20; ++i)
	{
		// 2分情况
		for (j = 0; j < 50; ++j)
		{
			if ((i * 5 + j * 2) <= 100)
			{
				nSum++;
				cout << 100 - 5 * i - 2 * j << "\t" << j << "\t" << i << endl;
			}
		}
	}
	cout << "共有" << nSum << "种换法" << endl;
 
	return 0;
}

问题2:

A、B、C、D四个孩子踢球时打碎了玻璃窗,
A说:不是我”
B说:是C
C说:是D
D说:他胡说
他们中只有一个人说了谎话,请问打碎玻璃窗的是?

实现:

#include <iostream>
using namespace std;
int main(void)
{
	for (int n = 1; n <= 4; ++n)
	{
		if ((n != 1) + (n == 3) + (n == 4) + (n != 4) == 3)
		{
			cout << "打碎玻璃窗的是: " << n << endl;
		}
	}
	return 0;
}


更多为你推荐