A - Color the ball

A - Color the ball

N个气球排成一排,从左到右依次编号为1,2,3…N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗?
Input
每个测试实例第一行为一个整数N,(N <= 100000).接下来的N行,每行包括2个整数a b(1 <= a <= b <= N)。

当N = 0,输入结束。
Output
每个测试实例输出一行,包括N个整数,第I个数代表第I个气球总共被涂色的次数。

    Sample Input
    3
    1 1
    2 2
    3 3
    3
    1 1
    1 2
    1 3
    0

    Sample Output
    1 1 1
    3 2 1

本题考察的是前缀和;
求解方法是数组前缀加一,后缀后面的那个数减一。

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;

int c[100000];
int main()
{
 int n,a,b,i;
 while(scanf("%d",&n),n!=0)
 {
  memset(c,0,sizeof(c));
  for(i=0;i<n;i++)
  {
   scanf("%d %d",&a,&b);
   c[a]++;
   c[b+1]--;//核心代码之一;
  }
   for(int j=1;j<=n;j++)
   {
       c[j]=c[j]+c[j-1];//重点!
       if(j==1)
       printf("%d",c[j]);
       else
    printf(" %d",c[j]);//注意输出格式,这个不正规。
   }
   printf("\n");
 }
 return 0;
 } 
# Step 1 import set up turtle and Screenimport turtleimport randoms = turtle.Screen()s.title("Pong")s.bgcolor("black")s.setup(width=600, height=400) # Step 2 Create ballball = turtle.Turtle()ball.speed(0)ball.shape("circle")ball.color("white")ball.penup()ball.goto(0, 0)ball.dx = 4ball.dy = 4 # Step 3 Create AI paddleai = turtle.Turtle()ai.speed(0)ai.shape("square")ai.color("white")ai.penup()ai.goto(-250, 0)ai.shapesize(stretch_wid=5, stretch_len=1) # Step 4 Create a paddle For Youyou = turtle.Turtle()you.speed(0)you.shape("square")you.color("white")you.penup()you.goto(250, 0)you.shapesize(stretch_wid=5, stretch_len=1) # Step 5 Create Function to move AI paddledef move_ai_paddle(): y = ball.ycor() if y > 0: ai.sety(ai.ycor() + 2) else: ai.sety(ai.ycor() - 2) # Step 6 Create a Function to move the your paddledef paddle2_up(): y = you.ycor() y += 20 you.sety(y) def paddle2_down(): y = you.ycor() y -= 20 you.sety(y)# Your Paddle control it with keys.listen()s.onkeypress(paddle2_up, "Up")s.onkeypress(paddle2_down, "Down") # Step 7 Start the game with a while loopwhile True: s.update() # Move the ball ball.setx(ball.xcor() + ball.dx) ball.sety(ball.ycor() + ball.dy) # Check for collisions with the walls if ball.ycor() > 190 or ball.ycor() < -190: ball.dy *= -1 # Move the robot paddle towards the ball if ball.ycor() > ai.ycor(): ai.sety(ai.ycor() + 4) elif ball.ycor() < ai.ycor(): ai.sety(ai.ycor() - 4) # Check for end game conditions if ball.xcor() > 300: turtle.textinput("Game End", "You Loss Pong Game With AI!") break if ball.xcor() < -300: turtle.textinput("Game End", "You Win Pong Game With AI!") break # Check for collisions with the robot paddle if (ball.xcor() < -240 and ball.xcor() > -250) and (ball.ycor() < ai.ycor() + 40 and ball.ycor() > ai.ycor() - 40): if random.random() < 0.9: # 90% chance of collision ball.dx *= -1 # Check for collisions with the user paddle if (ball.xcor() > 240 and ball.xcor() < 250) and (ball.ycor() < you.ycor() + 40 and ball.ycor() > you.ycor() - 40): ball.dx *= -1 turtle.exitonclick()
最新发布
05-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值