奥教案
nsnsjsjjs
闻道有先后,术业有专攻,如是而已。
展开
-
4-1 迷宫
题目描述:输入一个N*N的矩阵,矩阵由0,1构成。0代表有障碍,不能通过;1代表可以通过。请输出从左上角到右下角的最小步数。#include <cstdio>void Dfs(int k,int x, int y);bool Map[50][50];short Rule[4][2] = {1, 0, 0, 1, -1, 0, 0, -1};//能省空间就省空间。int N, Ans=9999;in原创 2016-05-16 20:31:35 · 509 阅读 · 0 评论 -
3-6 分解质因数
题目描述:将一个正整数N的全部质因数输出。#include <cstdio>#include <cstring>void Judge();void R(int k, int l, int h);int J[100];int T[50];int N;int main() { Judge(); scanf("%d", &N); R(0, 2, N); return原创 2016-05-12 21:33:35 · 603 阅读 · 0 评论 -
3-5 数的拆分
题目描述:输入一个正整数,拆分成正整数(可重复)的和,求所有的情况。#include <cstdio>void R(int k, int l, int h);int T[50];int N;int main() { scanf("%d", &N); R(0, 1, N); return 0;}void R(int k, int l, int h) { if(h ==原创 2016-05-12 21:10:00 · 385 阅读 · 0 评论 -
3-4 数的组合
题目描述:输出从前N个正整数中取出M个数(不可重复)的组合。#include <cstdio>void R(int k, int l);int T[50];int N, M;int main() { scanf("%d%d", &N, &M); R(0, 0); return 0;}void R(int k, int l) { if(k == M) {原创 2016-05-12 21:05:24 · 345 阅读 · 0 评论 -
3-3 字母排列
题目描述:输出由A、B、C三个字母组成长度为N的没有连续3个相同的子串。#include <cstdio>void Dfs(int k, int l1, int l2);int T[50];int N;int main() { scanf("%d", &N); Dfs(0, 0, 0); return 0;}void Dfs(int k, int l1, int l2) {原创 2016-05-12 20:34:41 · 673 阅读 · 0 评论 -
3-2 八皇后问题
题目描述:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,有多少种摆法。#include <cstdio>#include <cstring>void Dfs(int k);int S[8];//标记列。 int L[15];//标记左斜行。 int R[15];//标记右斜行。 int Ans = 0;int main() {原创 2016-05-12 20:18:13 · 319 阅读 · 0 评论 -
3-1 错排
题目描述:有N封信,要投入到N个不同的邮筒中,这N封信都投错的方案有多少种。#include <cstdio>#include <cstring>void Dfs(int k);int H[50];//标记数组,标记该邮筒是否已经投过信。int N, Ans = 0;int main() { memset(H, 0, sizeof(H)); scanf("%d", &N);原创 2016-05-12 19:56:09 · 367 阅读 · 0 评论 -
2-4 数的排列
题目描述:输出从N个不同的正整数(限定次数)中取出M个数的排列。#include <cstdio>void Dfs(int k);int J[50];//记录数组。int T[50];int H[50];//标记数组,判断该数次数是否用尽。int N, M;int main() { scanf("%d%d", &N, &M); for(int a=1; a<=N; a++) {原创 2016-05-12 19:44:11 · 309 阅读 · 0 评论 -
2-3 限次排列
题目描述:输出从前N个正整数(限定次数)中取出M个数的排列。#include <cstdio>#include <cstring>void Dfs(int k);int T[50];int H[50];int N, M;int main() { memset(H, 0, sizeof(H)); scanf("%d%d", &N, &M); for(int a=1; a<=原创 2016-05-12 19:33:21 · 252 阅读 · 0 评论 -
2-2 无重复排列
题目描述:输出从前N个正整数中取出M个数(不可重复)的排列。#include <cstdio>#include <cstring>void Dfs(int k);int T[50];int H[50];//标记数组,判断该数是否已被用过。int N, M;int main() { memset(H, 0, sizeof(H)); scanf("%d%d", &N, &M);原创 2016-05-12 19:25:42 · 428 阅读 · 0 评论 -
2-1 重复排列
题目描述:输出从前N个正整数中取出M个数(可重复)的排列。#include <cstdio>void Dfs(int k);int T[50];int H[50];int N, M;int main() { scanf("%d%d", &N, &M); Dfs(0); return 0;}void Dfs(int k) { if(k == M) {原创 2016-05-12 19:18:04 · 270 阅读 · 0 评论 -
1-6 Tower of Hanoi
题目描述:输入一个整数N,将N阶汉诺塔的过程输出。#include <cstdio>void Dfs(int n, char A, char B, char C);int main() { int n; scanf("%d", &n); Dfs(n, 'A', 'B', 'C'); return 0;}void Dfs(int n, char A, char B,原创 2016-05-12 18:53:07 · 336 阅读 · 0 评论 -
1-5 整数的第K位
题目描述:输入一个整数,输出其第K位。#include <cstdio>void Dfs(int i, int k);int main() { int n, k; scanf("%d%d", &n, &k); Dfs(n, k); return 0;}void Dfs(int i, int k) { if(k == 1) { printf("原创 2016-05-12 18:36:31 · 577 阅读 · 0 评论 -
1-4 最大公约数
题目描述:求两个整数的最大公约数(辗转相除法)。#include <cstdio>void Dfs(int i, int j);int main() { int n, m; scanf("%d%d", &n, &m); if(n > m) { Dfs(n, m); } else { Dfs(m, n); } return原创 2016-05-11 23:59:42 · 545 阅读 · 0 评论 -
1-3 倒序输出
题目描述:输入一串字符,以’.’结束,倒序输出。#include <cstdio>void Dfs();int main() { Dfs(); return 0;}void Dfs() { char c; scanf("%c", &c); if(c == '.') { return; } else { Dfs();原创 2016-05-11 23:49:17 · 366 阅读 · 0 评论 -
1-2 Fibonacci sequence
题目描述:输入一个整数N,输出斐波那契数列的前N项。#include <cstdio>void Dfs(int f1, int f2, int k);int N;int main() { scanf("%d", &N); printf("F(1)=1\nF(2)=1\n"); Dfs(1, 1, 3); return 0;}void Dfs(int f1, int原创 2016-05-10 00:11:46 · 247 阅读 · 0 评论 -
1-1 求N!
题目描述:用递归来求N的阶乘。#include <cstdio>void Dfs(int k);int N, Ans=1;int main()//主函数 { scanf("%d",&N); if(N == 0) { printf("1"); } else { Dfs(1); } return 0;}void Dfs(int k原创 2016-05-09 23:47:15 · 310 阅读 · 0 评论 -
4-2 跳马
题目描述:一张5*5的象棋棋盘,棋子马从左上角开始跳,跳完所有的格子。输出所有的情况并在最后输出情况个数。#include <cstdio>#include <cstring>void Dfs(int k, int x, int y);short Map[5][5];short Rules[8][2]={2, 1, 1, 2, 2, -1, -1, 2, -2, 1 , 1, -2, -1, -原创 2016-05-16 21:40:55 · 369 阅读 · 0 评论