2017.6.4 入门组 NO.4——猜数

本文介绍了一种区间查询算法,通过不断调整区间的左右边界来确定最终的查询范围。该算法适用于需要频繁进行区间判断的问题,并提供了详细的实现步骤及示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述
这里写图片描述


这题就是求一个区间[l..r],那开始将l=-10000 r=10000
每次输入一次判断,如果为”N”,那么就将符号反转,如 >→<= <→>= >=→< <=→>
那么符号处理好后,
①如果为”>”或”>=”,那么如果当x大于l且小于或等于r,则l=x
如果当x大于r,则输出”Impossible”
②如果为”<”或”<=”,那么如果当x大于或等于l且小于r,则r=x
如果当x小于l,则输出”Impossible”
(Tips:每当枚举”>”或”<”,x+1)
有此公式,妈妈再也不用担心我不能AC了


代码如下:

var s:string;
    l,r,n,i:longint;

procedure doit;
var  l2,l1,fw:longint;
     fh,s1:string;
begin
  l2:=pos(' ',s); fh:=copy(s,1,l2-1); s[l2]:=',';
  l1:=pos(' ',s);
  s1:=copy(s,l2+1,l1-l2-1);
  val(s1,fw);
  s[l1]:=',';
  if s[l1+1]='N' then
    if fh='>' then fh:='<='
    else if fh='<' then fh:='>='
         else if fh='>=' then fh:='<'
              else if fh='<=' then fh:='>';
  if (fh='>')or(fh='>=') then
      begin
        if fh='>' then fw:=fw+1;
        if (fw>l)and(fw<=r) then l:=fw
        else if fw>r then begin writeln('Impossible'); close(input); close(output); halt; end;
      end;
  if (fh='<')or(fh='<=') then
      begin
        if fh='<' then fw:=fw-1;
        if (fw<r)and(fw>=l) then r:=fw
        else if (fw<l) then begin writeln('Impossible'); close(input); close(output); halt; end;
      end;
end;

begin
  readln(n);
  l:=-10000; r:=10000;
  for i:=1 to n do
    begin
      readln(s);
      doit;
    end;
  writeln(l);
end.
Vue.js 游戏是一个基于 Vue 框架构建的小型前端应用程序,它通常用于演示如何创建交互式的用户界面以及处理用户的输入。 在这个游戏中,程序会随机生成一个字作为目标值,玩家需要通过输入框测这个值是多少,并提交他们的答案。每当玩家做出一次新的尝试时,系统会对他们提供的值进行验证并给出提示信息(如“太大了”、“太小了”),直到最终成功出正确的答案为止。 为了帮助您更好地理解怎样利用 Vue 来搭建这样一个简单的项目,这里有一个简化版的例子供参考: HTML 部分: ```html <div id="app"> <h1>猜数字游戏</h1> <p v-if="showMessage">{{ message }}</p> <input type="number" placeholder="请输入您的..." v-model="guess"/> <button @click="checkGuess">提交</button> </div> ``` JavaScript (Vue)部分: ```javascript new Vue({ el: '#app', data() { return { targetNumber: Math.floor(Math.random() * 100), guess: null, message: '', showMessage: false } }, methods: { checkGuess() { if (!this.guess) { // 判断是否有提供有效的输入 this.message = '请输入一个有效字'; this.showMessage = true; return; } const num = parseInt(this.guess); if (num === this.targetNumber){ this.message='恭喜你赢啦!'; } else if(num > this.targetNumber){ this.message='太高啦!'; }else{ this.message='太低啦!'; } this.showMessage=true; } } }); ``` 此示例展示了使用 Vue 的双向据绑定 `v-model` 和事件监听器 `@click` 创建了一个基本的游戏流程。当然,在实际应用中还可以添加更多功能或改进用户体验,比如限制最大最小范围、增加重置按钮等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值