| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1659 人关注过本帖
标题:硬币问题
只看楼主 加入收藏
csz88999
Rank: 1
来 自:云南
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-6-1
收藏
 问题点数:0 回复次数:8 
硬币问题
有N个硬币(N为偶数)正面朝上排成一排,每次将 N-1 个硬币翻过来放在原位
置, 不断地重复上述过程,直到最后全部硬币翻成反面朝上为止。编程让计算机把
翻币的最简过程及翻币次数打印出来(用*代表正面,O 代表反面)。
谁能帮我编一下呀,在TC2.0下面运行.
搜索更多相关主题的帖子: 硬币 
2007-06-02 15:48
起点线
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-12-7
收藏
得分:0 

没怎么懂.

假如有6个的话.
那第一次不就翻了5个了吗?
只要再翻一下不就全部反了吗?

不知道是不是这样的,能不能说明白点啊.


2007-06-02 17:39
老糊涂
Rank: 1
等 级:新手上路
威 望:1
帖 子:117
专家分:0
注 册:2007-5-19
收藏
得分:0 
如果每次将 1 个硬币翻过来放在原位

#include "stdio.h"
main()
{
int n,i,j,k;
scanf("%d",&n);
for(i=0;i<n+1;i++){
for(j=n-i;j>0;j--)
printf("*");
for(k=0;k<i;k++)
printf("0");
printf("\n");
}
}

2007-06-02 18:42
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
这个题有点意思,这是我的代码:

#include<stdio.h>
#define MAX 10000
char flags[MAX];
int main(){
int i,j,n,c;
while(scanf(\"%d\",&n)!=EOF&&n>0&&n<=MAX&&n%2==0){
for(i=0;i<n;i++){ flags[i] =0; printf(\"*\");}
printf(\"\n\");
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(j!=i) flags[j] ^= 1;
printf(flags[j]?\"0\":\"*\");
}
printf(\"\n\");
}
printf(\"Total :%d\n\",n);
}
return 0;
}

注意:代码虽然简单,但要证明其正确性还是有点难度的(证明这样翻是次数最少的翻法)

My BlogClick Me
2007-06-02 20:43
csz88999
Rank: 1
来 自:云南
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-6-1
收藏
得分:0 
是呀,我也觉得这个很难证明,不过你这个应该对吧!谢谢了

2007-06-09 21:22
csz88999
Rank: 1
来 自:云南
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-6-1
收藏
得分:0 
不过这个也好像不对呀,
当n=4时,
****
*000 翻第一次,翻3个.
*000 翻第二次,鄱2个
0000 鄱第三次,鄱1个.
但是运行结果是下面这个:
4
****
*000
00**
***0
0000
Total :4

我觉得这个程序还是有问题呀

2007-06-09 22:03
csz88999
Rank: 1
来 自:云南
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-6-1
收藏
得分:0 

麻烦大家帮我看一下呀,我这个可能规划上不太好,但结果应该是对的吧!
#include<stdio.h>
main()
{ int n,i;
printf("please input the number:\n");
scanf("%d",&n);
printf("\n");
if(n%2!=0)
printf("you enter is wrong!");
else
{
for(i=0;i<n;i++)
printf("*");
printf("\n");
for(i=0;i<n-1;i++)
printf("0");
printf("*");
printf("\n");
printf("00");
for(i=2;i<n-1;i++)
printf("*");
printf("0");
printf("\n");
for(i=0;i<n;i++)
printf("0");
printf("\n");
printf("Total:3");
}
getch();
}

谁能帮我改一下.


2007-06-10 13:37
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
以下是引用csz88999在2007-6-9 22:03:58的发言:
不过这个也好像不对呀,
当n=4时,
****
*000 翻第一次,翻3个.
*000 翻第二次,鄱2个
0000 鄱第三次,鄱1个.
但是运行结果是下面这个:
4
****
*000
00**
***0
0000
Total :4

我觉得这个程序还是有问题呀

我晕,题目不是说每次翻N-1个嘛,N=4的时候就是每次翻3个,谁让你翻两个去了?


My BlogClick Me
2007-06-10 14:19
csz88999
Rank: 1
来 自:云南
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-6-1
收藏
得分:0 

哦,可能是我把题目意思搞错了呀!
谢谢帮忙呀!

2007-06-10 14:31
快速回复:硬币问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016351 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved