c语言学习笔记
来源:互联网 发布:网页传奇游戏源码 编辑:程序博客网 时间:2024/06/06 01:41
递归练习
一、汉诺塔
假设所有的盘子都在A柱,需要移动到C柱。
输入盘子的数量,输出移动的步骤。
#include<iostream>using namespace std;void hanoi(int n, char a, char b, char c){ if(n != 1) { hanoi(n - 1, a, c, b); cout<<"把一个盘子从"<<a<<"移到"<<c<<endl; hanoi(n - 1, b, a, c); } else if(n == 1) { cout<<"把一个盘子从"<<a<<"移到"<<c<<endl; }}int main() { int n; char a = 'a', b = 'b', c = 'c'; cin>>n; hanoi(n, a, b, c); return 0; }
二、放苹果
把m个苹果放到n个盘子里,可以有空盘子。求有多少种算法?
例:
输入:7 3
输出:8
注:
不考虑盘子顺序,即
int apple(int m, int n){ int x, emptyExist = 0; if( m == 1 && n == 1) return 1; else if(n > m) { return apple(m, m); } else if(m != 0 && n == 0) return 0; else if(m == 0) return 1; else if( n <= m) { return apple(m - n, n) + apple(m, n - 1); }} //在main函数里输入m和n后,输出apple(m, n)即可
三、求解理解错误的逆波兰表达式的值
float input[] = {'/', '+', '/', 11, 22, 24, 20};
如上input的计算方式为 :
#include<stdio.h>#include<math.h>float compute(float before[], int sizebefore, float after[], int sizeafter);float reverse(float a[], int l);float input[] = {'/', '+', '/', 11, 22, 24, 20};float output[] = {'+', 11, 12};float reverse(float a[], int l){ int i; float b[l - 2]; if(l == 3) { switch((int)a[0]) //a[2] 运算符 a[1] { case '+': return a[2] * 1.0 + a[1]; break; case '-': return a[2] * 1.0 - a[1]; break; case '*': return a[2] * 1.0 * a[1]; break; case '/': return a[2] * 1.0 / a[1]; break; } } else { for(i = 1; i <= l - 2; i++) { b[i - 1] = a[i]; //b[] 为 a[] 除去头和尾,即下一次递归的a[] } return compute(a, l, b, l - 2); //a[l - 2] * reverse(b[]) }}float compute(float before[], int sizebefore, float after[], int sizeafter){ switch((int)before[0]) { case '+': return before[sizebefore - 1] * 1.0 + reverse(after, sizeafter); break; case '-': return before[sizebefore - 1] * 1.0 - reverse(after, sizeafter); break; case '*': return before[sizebefore - 1] * 1.0 * reverse(after, sizeafter); break; case '/': return before[sizebefore - 1] * 1.0 / reverse(after, sizeafter); break; }}int main(){ float toBeSolved[]; int sizeOf; //自行输入逆波兰表达式,To be continued printf("%f", reverse(input, sizeof(input) / sizeof(input[0]))); return 0;}
0 0
- c语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C 语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- c语言学习笔记
- C语言学习笔记
- c语言学习笔记
- C语言学习笔记
- C语言学习笔记
- Python 常用处理
- x86_64 函数调用约定
- MySQL学习笔记9:连接查询
- socket 编程下 inet_ntoa() 函数的使用与注意事项
- DZNSegmentedControl
- c语言学习笔记
- 数据连接核心类(java层)
- 程序猿白话之——const的妙用
- android 6.0权限管理特性
- swift学习笔记之闭包
- Windows下发布Qt程序
- 【菜鸟嵌入式学习分享】4412开发板Android4.4.4环境的搭建和编译
- Ios使用按钮自定义segmentcontrol
- android 前置service