回溯额 void backtrack(int n, int index, vector<bool>& visited, int & count) { if (index == n) { if (visited[n]) { count++; if (count == 1000000007) count = 0; return; } else { count++; if (count == 1000000007) count = 0; count++; if (count == 1000000007) count = 0; return; } } if (visited[index]) { backtrack(n, index + 1, visited, count); } else { for (int i = 0; i < 2; ++i) { if (0 == i) { int temp1 = index ; while (temp1 <= n) { visited[temp1] = true; temp1 += index; } backtrack(n, index + 1, visited, count); int temp2 = index ; while (temp2 <= n) { visited[temp2] = false; temp2 += index; } } else { visited[index] = true; backtrack(n, index + 1, visited, count); visited[index] = false; } } } return; } int main() { int n = 0; while(cin >> n) { vector<bool> visited(n+1, false); int count = 0; backtrack(n, 2, visited, count); cout << count << endl; } }
点赞 6

相关推荐

06-25 09:33
厦门大学 Java
球球别拷打俺了:现在日常估计没啥hc了,等到八月多估计就慢慢有了。双九✌🏻不用焦虑的
投递快手等公司10个岗位
点赞 评论 收藏
分享
07-22 11:35
门头沟学院 Java
谁知道这是为什么吗,有没有懂的佬给讲讲
理智的小饼干又熬夜了:鹅打电话问我参不参加后台提前批,说是有的但还没放官网
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务