蓝桥杯试题及答案(蓝桥杯基本试题及答案Java)
c语言蓝桥杯的一道题 我百度了回答可是看不太懂,期待有些人帮助解释一下,只需注解一下dfs函数就好了!!
void?dfs(int?cur,//?现阶段必须找到的分式
int?s,//?分母的极小值
long?long?fz,//?剩余未分派一部分尺寸的分子结构
long?long?fm)//?剩余未分派一部分尺寸的分母
//?假如必须搜索最后一个分式
if?(cur?==?n)
{
//?假如分母不可以被分子结构整除,则最后一个分式没法组成
if?(fm?%?fz)
return;//?从搜索中退还
//?最后一个分式的分母
a[cur]?=?fm?/?fz;
//?假如最后一个分式的分母超过30,从搜索中回到
if?(a[n]?>?30)
return;//?从搜索中退还
//?把任何的分式打印出出去
for?(int?i?=?0;?i?<?n;?i )
printf("1/%d?",?(int)a[i]);
printf("1/%d\ ",?(int)a[n]);
return;//?从搜索中退还
}
//?测算下一个分母的极小值
s?=?(int)max(s?*?1LL,?fm?/?fz? ?1);
int?i;
long?long?A,?B,?Gcd;
//?枚举类型全部有可能的下一个分母
for?(i?=?s;;?i )
{
//?假定后边全部的分式所有的分母全是?i,都不可以促使总数做到?fz?/?fm
if?(i?*?fz?>=?fm?*?(n?-?cur? ?1))
break;//?不会再枚举类型更高的分母
//?设置现阶段分式的分母为?i
a[cur]?=?i;
//?剩余成绩的分母
B?=?fm*i;
//?剩余分数的分子结构
A?=?fz*i?-?fm;
//?求最大公约数
Gcd?=?gcd(A,?B);
//?深搜,求下一个分式,并且最少分母是?i? ?1,剩余成绩的分子结构分母都约分
dfs(cur? ?1,?i? ?1,?A?/?Gcd,?B?/?Gcd);
}
return;
第一届蓝桥杯第五题,求答案
估测是卡塔南计数问题,
最少有m = n, 因此算卡塔兰数C(2n, n) / (n 1)
随后对每一个2n长短的排序,随便插进剩下的(m - n)个five毛党……
m - n)个原素全排列以后,在(2n 1)个位置选取(m - n)个;
但是我还是觉得这一题型叙述不清楚,这也是第一届的考题