解题思路:穷举法,没啥好说的。
优化方式:减少穷举次数:要每种钞票最少一张,所以 10 元钞票最多只能有 9 张;同理,5 元钞票最多只能有 19 张,2 元的和 1 元的最多只能有 37 张。
#include3. 读取一个字符串,字符串可能含有空格,将字符串逆转,原来的字符串与逆转后字符串相同,输出0,原字符串小于逆转后字符串输出-1,大于逆转后字符串输出1。例如输入 hello,逆转后的字符串为 olleh,因为hello 小于 olleh,所以输出-1。using namespace std; // 穷举法思想 int main() { int a, b, c, d,total = 0; for (a = 1; a <= 9; a++) { for (b = 1; b <= 19; b++) { for (c = 1; c <= 37; c++) { for (d = 1; d <= 37; d++) { if (a * 10 + b * 5 + c * 2 + d == 100 && a + b + c + d == 40) { total++; } } } } } cout << total << endl; }
解题思路:数组逆置,通过 strcmp() 判断两组字符串的大小。
需要说明的是,C++ 编译器已不支持 gets(),在 C++ 中,对字符数组的赋值,使用 cin.getline(字符数组名, 字符数组长度),若使用 C 语言,则还需要在逆置数组后再设置结束符 ‘’。
#include#include #include using namespace std; int main() { char s[100]; cin.getline(s, 100, ''); // 字符数组名称,字符数组大小,结束符(不写则默认) // gets(s); // C语言用法,C++编译器已不支持gets() int len = strlen(s); char v[100]; // 逆置数组 for (int i = len - 1, j = 0; i >= 0; i--, j++) { v[j] = s[i]; } // v[j] = ''; // C语言情况下,需要另设置字符串结束符 int result = strcmp(s, v); if (result < 0) { cout << -1 << endl; } else if (result > 0) { cout << 1 << endl; } else { cout << 0 << endl; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)