解题思路:递归, 4以下写的很苦, 不优化了
注意事项:格式
参考代码:
#include<iostream> #include<limits> #include<cstring> #include<cmath> using namespace std; const int N = 1e5 + 10; char a[N]; int m; void print(int i){ printf("step%2d:",i); for(int i = 1; i <= 2 * m + 2; i ++){ cout << a[i]; } cout << endl; } void dfs(int n,int l){ if(n > 4){ a[2*n + 1] = a[n]; a[2*n + 2] = a[n + 1]; a[n] = a[n + 1] = '-'; print(l++); a[n] = a[2 * n - 1]; a[n + 1] = a[2 * n - 2]; a[2 * n - 1] = a[2* n ] = '-'; print(l++); dfs(n - 1, l); } if(n == 4){ a[2*n + 1] = a[n]; a[2*n + 2] = a[n + 1]; a[n] = a[n + 1] = '-'; print(l++); a[n] = a[2 * n ]; a[n + 1] = a[2 * n + 1]; a[2 * n] = a[2* n + 1] = '-'; print(l++); a[2*n] = a[n- 2]; a[2*n + 1] = a[n- 1]; a[n-2] = a[n - 1] = '-'; print(l++); n--; a[n-1] = a[2*n + 1]; a[n] = a[2*n + 2]; a[2*n + 1] = a[2*n + 2] = '-'; print(l ++); a[2*n + 1] = a[n - 2] ; a[2*n + 2] = a[n - 1] ; a[n - 2] = a[n - 1] = '-'; print(l ++); return; } } int main() { cin >> m; for(int i = 1; i <= m; i ++){ a[i] = 'o'; a[i + m] = '*'; } a[2*m + 1] = a[2*m + 2] = '-'; print(0); dfs(m,1); return 0; }
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:774 |
【蟠桃记】 (C语言代码)浏览:664 |
WU-格式化数据输出 (C++代码)浏览:1212 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:688 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:956 |
用筛法求之N内的素数。 (C语言代码) 详解………………浏览:1018 |
Manchester- 陶陶摘苹果浏览:4100 |
母牛的故事 (C语言代码)浏览:3058 |
Cylinder (C语言代码)浏览:502 |
DNA (C++代码)(直接上代码)浏览:847 |