蓝桥杯算法提高 递推求值
1个回答
展开全部
楼主你好(百度终于显示我的回答了^_^)解题思路:首先不难发现对于一个分数可能的答题情况有:2^20=1024种正确为1,错误为0显然这就需要用到二进制数了也就是遍历整数:0~1023每一个整数的二进制数代表一个答题方案(0就表示0000000000十道题全错;1023表示1111111111十道题全对)具体实现代码如下:(非递归算法)#includevoidfun(intn,intscore)//输出答题情况{inta[11],i=1,k=512,sum=10;while(i<11)//求出当前答题情况的二进制表达式(正序求余){a[i]=(n/k)%2;sum=a[i]?sum*2:sum-i;k/=2;i++;}if(sum==score)//如果当前分数等于预定分数就输出答题情况{for(i=1;i<11;i++)printf("%d",a[i]);printf("\n");}}intmain(){inti,score;printf("Enterthescore:");scanf("%d",&score);for(i=0;i<1024;i++)//遍历所有的答题情况fun(i,score);return0;}输出的结果为:101101000001110100000010110011希望能帮助你哈(这是我在自己百度空间共享的解法有注释应该能明白吧)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询