【openjudge 计算概论(A)】[函数递归练习(3)]
1:全排列
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char ch[10];
int len,a[10];
bool p[10];
void dfs(int t)
{if(t>len){for(int i=1;i<=len;++i) printf("%c",ch[a[i]]);printf("\n");return; }for(int i=1;i<=len;++i)if(!p[i]){p[i]=1; a[t]=i;dfs(t+1);p[i]=0; a[t]=0;}
}
int main()
{scanf("%s",ch+1);len=strlen(ch+1);dfs(1);return 0;
}
2:分解因数
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,tot,T;
void dfs(int last,int m)
{if(m==1) {tot++; return;}for(int i=last;i<=m;++i)if(!(m%i)) dfs(i,m/i);
}
int main()
{scanf("%d",&T);while(T--){scanf("%d",&n);tot=0;dfs(2,n);printf("%d\n",tot);}return 0;
}
3:走出迷宫
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char ch[110][110];
int d1[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
int n,m,dis[110][110];
int d[10010][2],h,t,tx,ty;
bool p[110][110];
int main()
{int i,j;memset(dis,127/3,sizeof(dis));scanf("%d%d",&n,&m);for(i=1;i<=n;++i){getchar();for(j=1;j<=m;++j){scanf("%c",&ch[i][j]);if(ch[i][j]=='S') d[++t][0]=i,d[t][1]=j,p[i][j]=1,dis[i][j]=0;if(ch[i][j]=='T') tx=i,ty=j;}}while(h!=t){h=(h%10010)+1;int x=d[h][0],y=d[h][1];if(tx==x&&ty==y) break;for(int i=0;i<4;++i){int xx=x+d1[i][0],yy=y+d1[i][1];if(xx>0&&xx<=n&&yy>0&&yy<=m&&ch[xx][yy]!='#'){if(dis[xx][yy]>dis[x][y]+1){dis[xx][yy]=dis[x][y]+1;if(!p[xx][yy]){p[xx][yy]=1;t=(t%10010)+1;d[t][0]=xx; d[t][1]=yy;}} }}}printf("%d\n",dis[tx][ty]);return 0;}
转载于:https://www.cnblogs.com/lris-searching/p/9403035.html
【openjudge 计算概论(A)】[函数递归练习(3)]相关推荐
- c语言 3个人比饭量大小,OpenJudge计算概论-比饭量【枚举法、信息数字化】
/*====================================================================== 比饭量 总时间限制: 1000ms 内存限制: 655 ...
- 大象喝水编程c语言,OpenJudge计算概论-大象喝水
/*========================================================= 大象喝水 总时间限制: 1000ms 内存限制: 65536kB 描述 一只大象 ...
- c语言碱基配对的算法,OpenJudge计算概论-配对碱基链
/*===================================== 配对碱基链 总时间限制: 1000ms 内存限制: 65536kB 描述 脱氧核糖核酸(DNA)由两条互补的碱基链以双螺 ...
- 括号匹配openjudge c语言,OpenJudge计算概论-扩号匹配问题【这个用到了栈的思想】...
/*====================================================================== 扩号匹配问题 总时间限制: 1000ms 内存限制: ...
- OpenJudge计算概论-找出第k大的数
/*================================================ 找出第k大的数 总时间限制: 1000ms 内存限制: 1000kB 描述 用户输入N和K,然后接 ...
- 【openjudge 计算概论(A)】[基础编程练习(运算成分)]
01:鸡尾酒疗法 #include<cstdio> #include<cstring> #include<algorithm> using namespace st ...
- OpenJudge计算概论-鸡尾酒疗法
/*===================================== 鸡尾酒疗法 总时间限制: 1000ms 内存限制: 65536kB 描述 鸡尾酒疗法,原指"高效抗逆转录病毒治 ...
- OpenJudge 计算概论(A) / B04 基础练习题(4)3:买房子
3:买房子 总时间限制:1000ms内存限制:65536kB 描述 某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K增长,并且该程序员 ...
- OpenJudge计算概论-找和为K的两个元素
/*============================================================== 找和为K的两个元素 总时间限制: 1000ms 内存限制: 65536 ...
- OpenJudge计算概论-字符串排序
/*====================================================================== 字符串排序 总时间限制: 1000ms 内存限制: 6 ...
最新文章
- Linux多线程矩阵,操作系统实验——多线程计算矩阵相乘
- 2013年1季度中国汽车品牌口碑研究报告 ——自主A级车
- pgsql 前10条_白沙湾南片区11条新建道路最新进度及建成时间,已建成一条!还有一条将通车...
- 【sprinb-boot】maven 多模块项目:单独 spring-boot:run 某个模块
- Android学习第二天-android常用命令
- ERROR org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: Exception in doCheckpoint
- php实现姓名按首字母排序的类与方法
- convert.todatetime指定日期格式_MATLAB的时间与日期
- python uuid
- 类似pyinstaller_pyinstaller安装与使用——那些我踩过的坑
- Jaca 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
- Cubase10.5稳定版安装包+安装教程
- 前后端分离,使用AppNode管理前端部署-安装
- Tcl/Tk的一些笔记
- NGUI制作Word图文混排效果
- 软件工程-大学体育馆管理系统用例图
- 射雕英雄传ol显示服务器断开,射雕OL边移动边攻击,告别站桩输出
- python画笑脸表情_python
- 京东万象:通过以太坊联盟链解决数据流通的信任难题
- limma包进行差异分析