Python如何做一道题编程实现:桌子上有n枚硬币,编号为1,2,……n。最开始,所有的硬币

C语言 大神 求代码有n枚硬币,现将它们排成一排,从1开始编号到n,有的

#include
#include
voidmain()
{
intn;
char*a;
intmax=0;
printf("输入硬币个数:");
scanf("%d",&n);
inttemp;
intpos1,pos2;
a=(char*)malloc(sizeof(char)*n);
printf("输入标志数组元素,1为正面,0为反面:");
for(inti=0;i{
scanf("%d",&a[i]);
}
for(i=0;i{
for(intj=i+1;j{
temp=0;
for(intt=i;t<=j;t++)temp+=!a[t];
if(temp>max)
{
pos1=i;
pos2=j;
max=temp;
}


}
}
printf("区间为%d到%d",pos1+1,pos2+1);
}

python n个硬币中找一个假币,且已知假币较轻,怎么用递归和非递归两种方法求

思路:假设有数组arr,里面的int值代表银币重量,下标代表第几个银币。

循环(非递归):把数组第一个值赋值给变量tmp,从第二个变量循环到最后一个,比较循环里的变量和tmp值,如果不等,就返回小数下标。

递归:用二分思想,银币分2堆(不能均分时把中间那个留出来),取重量小的那堆继续二分。最后只剩下一个时就是所求

下面这种写法是返回下标的。也可以把硬币假设成一种数据类型,然后返回那个类型

#!/usr/bin/python
#-*-coding:utf-8-*-
#返回最小值下标
defgetMin(arr1):
iflen(arr1)==0:return-1
tmp=arr1[0]
index=0
forcurinarr1:
iftmp!=cur:
return0iftmpindex+=1
return-1
real_index=0
#返回最小值下标递归
defgetMinRecursion(arr1):
globalreal_index
n=len(arr1)
ifn==0:return-1
ifn==1:returnreal_index
ifn==2:returnreal_indexifarr1[0]sum1=sum(arr1[0:int(n/3)])
sum2=sum(arr1[int(n/3):int(n/3)*2])
ifsum1==sum2:
real_index+=int(n/3)*2
returngetMinRecursion(arr1[int(n/3)*2:n+1])
ifsum1returngetMinRecursion(arr1[0:int(n/3)])
else:
real_index+=int(n/3)
returngetMinRecursion(arr1[int(n/3):int(n/3)*2])
arr=[1,1,1,1,1,1,0,1,1]
print("%d"%getMin(arr))
print("%d"%getMinRecursion(arr))

用python做一个程序:扔100次硬币,然后分别显示出掷出正面和反面的次数

7行代码即可写出程序,详细步骤:

1、首先打开python自带的IDLE,打开IDLE并ctrl+n新建如图界面。

2、导入random模块的choice功能。

3、在列表中放置up和down这两个元素,这里表示正面朝上和正面朝下。因为不考虑硬币立着的奇葩设定,所以只加这个上和下。并且把列表赋予给coin这个变量。

4、接下来使用for循环来遍历,range后面为抛硬币次数,这里我想程序运行一次只抛硬币一次,所以range后面设置为1。

5、这一行,就是if判断了,如果随机从列表中抽取到了up。

6、那么就要输出“正面”。

7、否则,就输出“反面”。

8、至此此代码完成,按F5即可运行,运行一次就抛一次。

python抛硬币正反各出现一次的概率?

假设抛一次硬币出现正面的概率是p,则出现反面的概率是1-p。 要正反各出现一次,需要先出现一次正面,再出现一次反面,或者先出现一次反面,再出现一次正面。 因此,正反各出现一次的概率为: P = 2 * p * (1-p) = 2 * (1-p) * p 其中,2表示两种情况的组合数。 由于硬币只有正反两面,因此p+(1-p)=1,即p=0.5。 带入公式得到: P = 2 * 0.5 * 0.5 = 0.5 因此,python抛硬币正反各出现一次的概率是0.5。

新人,求大神帮助:用python 写两个程序 1,有30枚硬币,其中一枚是假币,假币较轻,现有一

NO.1
#encoding:UTF-8
'''
只想到用二分法查找
'''
importrandom
defFindMoney(aList):
iflen(aList)==2:
ifaList[0]>aList[1]:
printaList[1]
else:
printaList[0]
else:
ifsum(aList[len(aList)/2:])>sum(aList[:len(aList)/2]):
FindMoney(aList[:len(aList)/2])
else:
FindMoney(aList[len(aList)/2:])

a=[1]*29+[0]
a.sort(lambdaa,b:random.randint(-1,1))#乱序
printa
FindMoney(a)
NO.2,详细解释请参照http://blog.csdn.net/handsomekang/article/details/10089221
#encoding:UTF-8
fromcollectionsimportdeque
importrandom
defMatchschedule(team):
c=team[1:]
c=deque(c)
foriinrange(len(team)-1):
c.appendleft(team[0])
forjinrange(len(team)/2):
printc[j],"<----->",c[-1-j]
c.popleft()
c.append(c.popleft())
if__name__=="__main__":
a=[iforiinrange(1,33)]
Matchschedule(a)

文章标签:信息技术Python硬币编程编程语言