算法问题

lxysjl 2004-09-08 03:01:41
假如我任意给出一个大于等于五的数.这个数也就是代表有几个币.币有正反二面.首先这几个币都为正面.我每次翻转五个.正变反,反变正,要多少次才能变成反面,而且最少是几次.列如.
假如为5(正面为1,反面为0) 假如为7
1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 (最少要一次) 0 0 0 0 0 1 1
0 1 1 1 1 1 0
0 0 0 0 0 0 0
(最少要三次)
...全文
191 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxysjl 2004-09-21
  • 打赏
  • 举报
回复
再想想其它的方法.我首先并不一定要把够5个的全翻过来啊.
lxysjl 2004-09-21
  • 打赏
  • 举报
回复
这样不行呢.公式不成立.不好意思,这几天忙.是要最少的.你看一下.假如十一个.
0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0 0
1 1 1 0 0 1 1 1 0 0 0
1 1 1 1 1 1 1 1 1 1 1
四次就翻完了啊.
ibp 2004-09-21
  • 打赏
  • 举报
回复
int times(int x)
{
if x==5 return 1;
if x==6 return 6;
rA=(x-7)%5;
gene=(x-7)/5;
switch (rA)
{
case 1: return gene+4;break;
case 3: return gene+2;break;
case 4: return gene+4;break;
default: return gene+3;
}
}

Hattiss 2004-09-20
  • 打赏
  • 举报
回复
翻5个硬币的情况是100%能解的,像我上面那样分解了就知道了。
Hattiss 2004-09-20
  • 打赏
  • 举报
回复
先5个5个把正的全翻过来,最后余下不能一次翻好的无非是4、3、2、1个,如果余下是4个,还要翻2次,余下是3个还要翻3次,余下是2个还要翻2次,是1个还要翻5次。解决鸟
total= 一个>=5的整数
times = int(total/5)
ra = total mod 5
if ra = 4 then times = times + 2
if ra = 3 then times = times + 3
if ra = 2 then times = times + 2
if ra = 1 then times = times + 5
print times
csj8559766 2004-09-20
  • 打赏
  • 举报
回复
算出5,6,7,8,9
先翻m=x\5 - 1

再求n=(x mod 5)+5'(n为5,6,7,8,9)
ibp 2004-09-20
  • 打赏
  • 举报
回复
回复人: route2(路人乙) ( ) 信誉:100 2004-09-17 18:49:00 得分: 0


呵,呵,试试这个:
3个硬币全正面,一次翻2个,翻成全反面
你能做到么?


不能,不是所有的都能解
ibp 2004-09-20
  • 打赏
  • 举报
回复
5 个 1次
6 个 6次
7 个 3次
8 个 4次
9 个 3次
10个 2次
11个 5次
12个=7+5=3+1
13个=8+5=4+1
......
以下同上
明白了吧。
route2 2004-09-17
  • 打赏
  • 举报
回复
呵,呵,试试这个:
3个硬币全正面,一次翻2个,翻成全反面
你能做到么?
lxysjl 2004-09-17
  • 打赏
  • 举报
回复
ibp,能解释一下吗.不怎么懂.
ibp 2004-09-13
  • 打赏
  • 举报
回复
x>=5
ibp 2004-09-13
  • 打赏
  • 举报
回复
int times(int x)
{
if x==5 return 1;
if x==6 return 6;
rA=(x-7)%5;
gene=(x-7)/5;
switch (rA)
{
case 1: return gene+4;break;
case 3: return gene+2;break;
case 4: return gene+5;break;
default: return gene+3;
}
}
lxysjl 2004-09-08
  • 打赏
  • 举报
回复
我顶
lxysjl 2004-09-08
  • 打赏
  • 举报
回复
肯定行的.反正一次翻五个.正变反,反变正.只是次数多一些而以
ibp 2004-09-08
  • 打赏
  • 举报
回复
偶数(如6)怎么翻?
lxysjl 2004-09-08
  • 打赏
  • 举报
回复
假如我任意给出一个大于等于五的数.这个数也就是代表有几个币.币有正反二面.首先这几个币都为正面.我每次翻转五个.正变反,反变正,要多少次才能变成反面,而且最少是几次.列如.
假如为5(正面为1,反面为0) 假如为7
1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 (最少要一次) 0 0 0 0 0 1 1
0 1 1 1 1 1 0
0 0 0 0 0 0 0
(最少要三次)

刚才不清楚.重新发一次
lxysjl 2004-09-08
  • 打赏
  • 举报
回复
假如我任意给出一个大于等于五的数.这个数也就是代表有几个币.币有正反二面.首先这几个币都为正面.我每次翻转五个.正变反,反变正,要多少次才能变成反面,而且最少是几次.列如.
假如为5(正面为1,反面为0) 假如为7
1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 (最少要一次) 0 0 0 0 0 1 1
0 1 1 1 1 1 0
0 0 0 0 0 0 0
(最少要三次)

刚才不清楚.重新发一次

7,786

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧