N(N是偶数)枚硬币均为正面朝上,每次翻转N-1枚硬币,要把所有的硬币翻转成反面朝上,求最短的 *** 作序列

N(N是偶数)枚硬币均为正面朝上,每次翻转N-1枚硬币,要把所有的硬币翻转成反面朝上,求最短的 *** 作序列,第1张

这样我们随便找一种就行了,我们可以这样想:

对于每一枚硬币,如果这枚硬币翻转奇数次的话,那么他就变成反面朝上了,由于n是偶数,我们可以将每一枚硬币都翻转n-1次,即可满足题目要求.由于每次翻转都要翻转n-1枚硬币,所以可以翻转n次,对于每一次,都有一枚硬币不翻转

程序如下:

var n,i,j:longint

a:array[1..500] of longint

begin

read(n)

writeln(n)

for i:=1 to n do begin

for j:=1 to n do if i<>j then

if a[j]=0 then a[j]:=1 else a[j]:=0

for j:=1 to n do write(a[j])

writeln

end

end.

以下是源代码:

#include <stdio.h>

int Arrange(int n)//返回兑换方案

{

int oneCount=0//1分硬币的数量

int twoCount=0//2分硬币的数量

int fiveCount=0//5分硬币的数量

int moneyCount=n*100//总金额元化成分

int count=0//兑换方案数

for(oneCount=0oneCount<=moneyCount/1oneCount++)

for(twoCount=0twoCount<=moneyCount/2twoCount++)

for(fiveCount=0fiveCount<=moneyCount/5fiveCount++)

if(oneCount*1+twoCount*2+fiveCount*5==moneyCount)

{

count++

printf("%d元可兑换成%d个1分硬币和%d个2分硬币和%d个5分硬币。\n",n,oneCount,twoCount,fiveCount)

}

return count

}

void main()

{

int n=0

printf("请输入金额:\n")

scanf("%d",&n)

printf("以下是兑换方案:\n")

printf("兑换方案共有%d种。\n",Arrange(n))

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7877477.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存