代码片段://答错情况 ans[u]=0; dfs(sum-u,u+1); //答对情况 ans[u]=1; dfs(sum*2,u+1);有疑问,前面的ans[u]=0不会被后面的ans[u]=1覆盖吗?求详解!
时间: 2023-11-26 14:03:30 浏览: 55
不会被覆盖,因为这两个赋值语句是在不同的条件分支中执行的。当答错时,执行的是 ans[u]=0; dfs(sum-u,u 1);,而当答对时,执行的是 ans[u]=1; dfs(sum*2,u 1);。因此,答错时 ans[u] 被赋值为 0,而答对时 ans[u] 被赋值为 1,两个赋值语句并不会互相影响。
相关问题
def cross(nums): n = len(nums) if n == 1: return nums if n == 2: return max(nums) if n == 3: return sum(nums) nums.sort() ans = 0 while n>3: ans += min(nums[n-1] + nums[0] + nums[n-2] + nums[0], \ nums[1] + nums[0] + nums[n-1] + nums[1]) n -= 2; #边界条件讨论 if n == 3: ans += sum(nums) #只剩三人 else: ans += nums[1] # 只剩两人,不可能剩一人 return ans nums = [1,2,5,8] num = [1,4,5,8] print(cross(nums))
这段代码的功能是实现一个游戏规则,给定一个长度为 n 的数组 nums,按照游戏规则,每次可以选择两个数 a 和 b,将它们从数组中移除,再将 a + b + min(nums) 加入数组中,直到数组中只剩下一个或两个数,求最终数组中所有数的和。
具体实现是先对数组进行排序,每次选择最小的两个数 a 和 b,加入 min(nums) 后更新数组,直到数组中只剩下一个或两个数。如果只剩下三个数,则将它们的和加入答案;如果只剩下两个数,则将它们中较小的数加入答案。
注:代码中的 num = [1,4,5,8] 没有被使用到。
#include<cstdio> #include<algorithm> using namespace std; typedef long long LL; LL solve(LL n,LL m,LL s) { if(m==1) return (n-1+s)%n; LL ans=0,i=2; while(i<=n) { if(ans+m<i)///递增时,x为增加次数 { LL x=(i-ans-1)%(m-1)?(i-ans-1)/(m-1):(i-ans-1)/(m-1)-1; if(i+x>n) { ans+=(n+1-i)*m; break; } i+=x; ans+=x*m; } else ///ans不是递增时 { ans=(ans+m)%i;///普通求法 i++; } } return (ans+s)%n; } int main() { LL n,m; while(scanf("%lld%lld",&n,&m)!=EOF) { LL ans=solve(n,m,1); printf("%lld\n",ans?ans:n); } return 0; }
这段代码实现了一个求解约瑟夫环问题的函数 `solve`,并在 `main` 函数中多次调用该函数。
具体来说,给定 $n$ 个人和一个数 $m$,这 $n$ 个人围成一圈,从第 $1$ 个人开始报数,报到 $m$ 的人出圈,剩下的人继续从 $1$ 开始报数,直到所有人都出圈。求最后一个出圈的人在初始时的编号。
`solve` 函数中的实现使用了两种方法:
- 当 `ans` 递增时,通过计算每次增加的次数,直接跳过一些人,减少不必要的求解。
- 当 `ans` 不递增时,使用普通的求解方法,即 `(ans + m) % i`。
最后,将最后一个出圈的人的编号 `ans` 与给定的起始编号 `s` 相加,再对 `n` 取模,即为最终答案。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)