您的位置:首页 > 其它

poj 1012(约瑟夫问题。。。)

2011-09-07 11:18 281 查看
虽说是不打表,但还是用了记忆话搜索。。。我感觉就是跟打表无差别了。。。。。大概的思路就是从 n+1 开始搜索直到找到满足条件的值就记下来。。。。。

写程序的时候,最好是把序列变成 0到2*n-1 这样取模的时候不用考虑那么多情况。。。。然后结果+1 就可以了。。。

#include <iostream>
#include<cstdio>
using namespace std;

int main(int argc, char** argv) {

int n, a[15] = {0}, k, m, len;
while (scanf("%d", &n) && n) {
if (!a
) {
m = n;
while (1) {
m += 1, k = 0, len = n << 1;
while (1) {
k = (k + m - 1) % len + 1;
if (k > n)
len -= 1, k -= 1;
else
break;
}
if (len == n) {
a
= m;
printf("%d\n", m);
break;
}
}
} else
printf("%d\n", a
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: