本文共 1983 字,大约阅读时间需要 6 分钟。
1.巴斯卡三角形
也就是有以下一些特点:把他看成一个正方形但只有右下部分。1.第一列全是1 2,对角线上全是1 3.对于其他位置 等于他的上一行对应列和上一行上一列的值相加。 也就是 dp[i][j]=dp[i-1][[j+dp[i-1][j-1]#include#include #include #include #include #include using namespace std;//巴斯卡三角形,假设就是给一个N作为规模int main(){ int n,i,j; scanf("%d",&n); //n就是相应的规模 //应该是这个数组,上半部分全是空格,先初始化 //然后开始格式化 char Str[n-1][n-1]; // memset(Str,' ',sizeof(Str)); Str[0][0]='1'; for(i=1;i
三色旗问题:
使用到了数组指针,分成三类,分别是蓝色的指针,白色的指针,和红色的指针。 并且这些有三种情况,以白色的指针为主,当一个值是白色的时,则指针数加一,如果是蓝色的话,那就和蓝色的位置交换,并且将蓝色的位置和白色的位置都加一,最后如果是红色的话,因为红色的指针是在最后 所以是指针减一,并且白色位置加一,然后将对应位置换位。#include#include #include #include #include #include using namespace std;//三色旗,主要就是指针的作用//再写一个用来交换的char Str[5]={ 'r','b','w','w','r'};void swap(int x,int y){ //交换这个两个的位置 char temp=Str[x]; Str[x]=Str[y]; Str[y]=temp;}int main(){ //先创建一个数组用来当例子 int i; int len=strlen(Str); int flagB=0; int flagW=0; int flagR=len-1; //开始计算 while(flagW
老鼠走迷宫(-)
应该是直接使用dfs,来判断是否有路 和本题无关,但是就是一个dfs的算法,会有一个判断函数,用来判断这个点能不能用,然后有两个数组来指示前后左右,最后就是dfs(map,x,y)判断前后左右是否可以,直到走到对应的位置,return true骑士走键盘
这道题的核心递归思想参数有x的起点,y的起点,总共走了几步#include#include #include #include #include #include using namespace std;//首先是一个八乘八的数组,表示这个地图int map[8][8];int Stepx[8]={ -2, -1, 1, 2, 2, 1, -1, -2};int Stepy[8]={ 1, 2, 2, 1, -1, -2, -2, -1};//这代表能走的方向int i;//然后开始写深度遍历bool DFS(int starx,int stary,int index){ //首先判断这个位置是不是64,也就是走到头了,如果是,那就说明正确,如果不是那就说明还得进行 map[starx][stary]=index; if(index==64) return true; //开始分别判断其他位置 for(int i=0;i<8;i++){ int newx=starx+Stepx[i]; int newy=stary+Stepy[i]; //开始判断这个位置合不合理 if(newx>=0&&newx<8&&newy>=0&&newy<8&&map[newx][newy]==0){ //没过界,并且可以访问 DFS(newx,newy,index+1); } } map[starx][stary]=0; return false;}int main(){ //对map初始化 memset(map,0,sizeof(map)); if(DFS(0,0,1)) printf("YES"); else printf("No");}
转载地址:http://eufen.baihongyu.com/