编程移动打靶
㈠ 用递归算法编程:一个射击选手打靶,靶一共有10环,连10抢打中90环的可能有多少种 多谢大侠们相助!
void Fun(int a[], int count,int sum)
{
if(count == 0)
{
if(sum>=90)
{
/*for(int i=0;i<10;++i)
cout<<a[i] << " ";
cout<<endl;*/
//想要输出就用上面的,只想得到结果就用下面的,其中num是全局变量
num++;
}
}
else
for(int i=0;i<=10;++i)
{
if((10-count)*10-sum>10)
continue;
a[10-count] = i;
Fun(a,count-1,sum+i);
}
}
结果是184756
---------------------------------------
如果只想求次数 下面的就够了
void Fun(int count,int sum)
{
if(count == 0)
{
if(sum >= 90)
num++;
}
else
for(int i=0;i<=10;++i)
{
if((10-count)*10-sum>10)
continue;
Fun(count-1,sum+i);
}
}
--------主函数中调用Fun(10,0)第一个参数表示打靶剩余次数,第二个表示前面打靶的总环数
㈡ 求VB6.0打靶小程序的原代码
Dim Flag, Star As Boolean
Dim Per As Integer
Dim Right As Integer
Dim Wrong As Integer
Dim i As Integer
Dim st, dt, tt As Variant
Private Sub Command1_Click()
Star = True
st = Now
dt = Now
tt = dt - st
Text1.Text = Format(tt, "hh:mm:ss")
Right = 0
Wrong = 0
Label1.Caption = "击中:" & Str(Right)
Label2.Caption = "失误" & Str(Wrong)
End Sub
Private Sub Command2_Click()
Star = False
End
End Sub
Private Sub Form_Load()
Flag = False
Star = False
Right = 0
Wrong = 0
End Sub
Private Sub Picture1_Click(Index As Integer)
If Index = Per Then
Right = Right + 1
i = i + 1
Label1.Caption = "击中:" & Str(Right)
Timer1_Timer
Else
Wrong = Wrong + 1
Label2.Caption = "失误" & Str(Wrong)
End If
End Sub
Private Sub Timer1_Timer()
If Star = True Then
If Not Flag Then
Randomize
Per = Int(Rnd(8) * 9)
Picture1(Per).Picture = LoadPicture("d:\ren.bmp")
Timer1.Interval = Int((400 - 20 + 1) * Rnd + 400)
Flag = True
Else
Picture1(Per).Picture = LoadPicture("d:\chuang.bmp")
Per = -1
Timer1.Interval = Int((500 - 20 + 1) * Rnd + 100)
Flag = False
End If
dt = Now
tt = dt - st
Text1.Text = Format(tt, "hh:mm:ss")
End If
End Sub
㈢ C语言编程求解
设分别为a,b,c环
则有a+b+c=8
10a+7b+5c=53
其中a<5,b<8,c<11(这个应该不用解释)
#include<stdio.h>
void main()
{
int a,b,c,x,y;
for(a=0;a<5;a++)
for(b=0;b<8;b++)
for(c=0;c<11;c++)
{
x=a+b+c;
y=10*a+7*b+5*c;
if(x==8&&y==53)
printf("10环d%发;7环d%发;5环d%发。",a,b,c);
}
}
㈣ 一个射击运动员打靶,靶一共有10环,连开10枪打中90环的可能性有多少种请用递归算法编程实现。
表示没有编译器,人工看的,结果不保证完全无误
你的运行结果应该是没有输出。
都因为你的剪枝
if (time==2 && score<10) {
return 0;
}
没有搞懂你的思路,你让time>10的时候输出,并在初始位置让time=1,所以打的十枪应该是2,3,4,5,6,7,8,9,10,11!!!但是你用上述剪枝是认为time=2时应当是第二枪,所以若两枪加起来没有十环就无法打到90环。两者矛盾,修改其一即可
因此对剪枝的可行改法有3
1.直接删去剪枝部分,此时时间效率实在不理想,不推荐,但确实有结果
2.改为if (time==3 && score<10) {
return 0;
}这是对你的剪枝的修改,即time=3时才是第二枪但时间效率仍不高
3.改为if (score<(time-2)*10) {
return 0;
}这是对剪枝的推广,不止是第二枪在任意一枪结束后,只要当前掉分超过10,就不可能达到90环。推荐
另外你的主函数中f(1,0)在此时是正确的,f(1,10)是不会在任何情况下正确,仅做剪枝上改动即可。
PS:for (i=1;i<11;i++) {
printf("%d",a[i]);
}可改为for (i=1;i<11;i++) {
printf("%d ",a[i]);//加入空格
}
㈤ scratch怎么制作可移动场景
启动Scratch,进入工作界面;
点Events(事件),将“当绿旗被点击时开始”拖曳投放到右边的脚本编辑区;
在角色列表中猫上面按鼠标右键,删除角色;
点Paint
new
sprite(绘制新角色);
点直线工具,左手按住键盘上的shift键不放,画出一条标准的直线;
点Script开始编写脚本;
点Events(事件),将“当绿旗被点击时开始”拖曳投放到右边的脚本编辑区;
点Motion(运动),将set
x
to
0(将X坐标设为0)拉到右边;
点Sensing(侦测),将mouse
x(鼠标的x坐标)拉到0的位置,替换到默认值0,就可以将球拍追随鼠标的运动,将它的x坐标设为鼠标的x坐标;
点Control(控制),给它加上Forever(循环)语句,就可以让球拍连续左右移动了;
点绿旗开始执行程序,点红色按钮停止执行,可以发现,在程序运行的过程中,右边的脚本一直闪烁亮着,一旦按红色按钮程序停止执行后,脚本不再发亮,是不是很神奇?赶快动手试试吧!
㈥ scratch编程小游戏怎么做图解
目前2.0官方的软件是不支持中文输入的,解决的方法只能在外部做成图片通过角色导入,通常方便一点使用ppt制作文字图片,保存成png格式透明图片,当然也可以使用ps,ai等软件制作,期待3.0可以使用中文吧。
㈦ 一个射击运动员打靶,靶一共有10环,连开10枪打中90环的可能性有多少种请用递归算法编程实现。[中国某着
先把问题在纸上描述清楚,再开始写程序,我看你的问题补充部分就是在纠缠细枝末节的i++、数组等问题,根本没有命中问题的要害。
先把你要求的问题转化一下,就是10个数加起来等于90,但十个数都不超过10,列方程如下
x1+x2+...+x10==90, 0<=x1,x2,...,x10<=10
那么开始来想递归,递归要先想递归什么时候结束,假定已经打了9枪,剩下最后一枪 x10,那么这样写:
foo(sum, left=1 ){
if(left==1){
for(x10=0;x10<11;x10++){
if(sum + x10 ==90)
cnt++;
}
return cnt;
}
}
再想递归的一般情况,递归函数
foo(sum, left) 表示当前总和为sum,还剩下left枪的,最后总和为90的所有组合数。
那么当前打了x环,之后,总和就是sum+x, 还剩下left-1枪
所以写出来就是:
foo(sum, left)
{
for(x=0;x<11;x++){
cnt += foo(sum+x9, left-1)
}
return cnt;
}
把上面2段合起来就是:
foo(sum, left)
{
cnt = 0;
if(left==1){
for(x=0;x<11;x++){
if(sum + x ==90)
cnt++;
}
return cnt;
}
for(x=0;x<11;x++){
cnt += foo(sum+x, left-1);
}
return cnt;
}
最后写main函数
int main()
{
foo(0, 10);
}
当你把递归写正确之后,再考虑优化你的算法,比如剪枝策略,把某些明显不可能的解去掉,这样就可以加速你的代码的运行。
㈧ 部队怎样练习移动靶,固定靶移动靶是怎么样的固定靶就是固定的山地还是什么
靶,就是瞄准或者射击的目标,说白了就是用木条做一个框,上面钉上木板,再贴一张画有环数标记的纸,立杆较长,可以埋在地上,一般有胸环靶,半身靶,机枪靶。移动靶同固定靶大体一样,只是能够移动,早先是人举,现在是电机带动。