没有合适的资源?快使用搜索试试~ 我知道了~
John Gilder在等车的时候拿出一摞硬币。首先这些硬币全部正面朝上,第一次翻转最上面的一个,第二次把最上面的两个一起翻转,第三次把最上面的三个硬币一起翻转,...,第n次一起翻转所有的n个硬币,第n+1次再将第一个硬币翻转,...,第m次将最上面m%n个硬币一起翻转。他发现,经过有限次的翻转后,硬币还能恢复到全部正面朝上。请编程验证这个过程。
资源推荐
资源详情
资源评论
import java.io.*;
public class Main {
public static void turn(int m){
int turnTimes = 0;
boolean flag = false;
boolean[] coins = new boolean[m];
for(int i=0;i<m;i++){
coins[i] = true;
}
while(!flag){
for(int i=0;i<m;i++){
for(int j=0;j<(i+1)/2;j++){
boolean temp = coins[j];
coins[j] = !coins[i-j];
coins[i-j] = !temp;
}
if((i+1)%2 == 1){
coins[i/2] = !coins[i/2];
}
turnTimes = turnTimes + 1;
flag = true;
for(int n=0;n<m;n++){
if(coins[n] == false){
flag = false;
break;
}
}
if(flag){
break;
public class Main {
public static void turn(int m){
int turnTimes = 0;
boolean flag = false;
boolean[] coins = new boolean[m];
for(int i=0;i<m;i++){
coins[i] = true;
}
while(!flag){
for(int i=0;i<m;i++){
for(int j=0;j<(i+1)/2;j++){
boolean temp = coins[j];
coins[j] = !coins[i-j];
coins[i-j] = !temp;
}
if((i+1)%2 == 1){
coins[i/2] = !coins[i/2];
}
turnTimes = turnTimes + 1;
flag = true;
for(int n=0;n<m;n++){
if(coins[n] == false){
flag = false;
break;
}
}
if(flag){
break;
资源评论
dbiwy
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功