柯林建站程序,亿图在线制作流程图,免费网站设计 优帮云,信阳做网站汉狮网络桐桐的游戏
题目大意#xff1a;
有一个用数组成的环要从1跳到z#xff08;有些点不能跳#xff09;#xff0c;每次跳的步数最少有多少步
原题#xff1a;
题目描述
桐桐最近在玩一个跳棋游戏#xff0c;规则是#xff1a;有个圆圈#xff0c;分成N等分#xff…桐桐的游戏
题目大意
有一个用数组成的环要从1跳到z有些点不能跳每次跳的步数最少有多少步
原题
题目描述
桐桐最近在玩一个跳棋游戏规则是有个圆圈分成N等分顺时针标号为1到N。假设其中有些段的障碍。桐桐从1号段出发每次顺时针跳K段目标是跳到第Z号段但过程中不能跳到障碍段上去。 假如N13K3Z9则跳的路径上的段号为147101336和9在此假设没有跳到障碍段上去。 现在请帮桐桐求出最小的K。
输入
第一行有整数NZ和M2≤N≤10002≤Z0≤M≤N-2。 N表示圆分成的段数Z表示桐桐想跳到的目标段号M表示障碍数。 第二行有M个数表示有障碍的段号。段1和段Z保证没有障碍。
输出
一个数K。
输入样例
【输入样例1】 7 4 16【输入样例2】 9 7 22 3【输入样例3】 7 6 22 4输出样例
【输出样例1】 1【输出样例2】 3【输出样例3】 5 解题思路
直接枚举跳的步数然后模拟看行不行
代码
#includecstdio
#includecstring
#includeiostream
using namespace std;
int n,m,z,x,k,p[1050],pp[1050];
int main()
{scanf(%d %d %d,n,z,m);for (int i1;im;i){scanf(%d,x);p[x]1;}for (int i0;iz;i)//枚举{memset(pp,0,sizeof(pp));pp[1]1;k1;while(k!z){k(ki-1)%n1;//往后跳if (pp[k]||p[k]) break;//不能再跳了}if (kz){printf(%d,i);break;}}
}