哎,才知道for循环可以这么用,学艺不精啊

问题背景

今天在做算法题的时候发现问题,题目如下:

利用二分查找找出所给出的数在数组中的下标

输入格式:

第一行输入n和m表示数组有n个数据,m表示要对m个数进行查找

输出格式:

所有输出在一行完成,行末没有多余空格和多余回车。

输入样例:

5 5
1 2 3 4 5
1 2 3 4 5

输出样例:

0 1 2 3 4

代码:

#include<iostream> using namespace std; int num[1000005]; int binarySearch(int begin,int end,int target){ while(begin<end){ int mid = (begin+end)/2; if(num[mid]==target) return mid; else if(num[mid]<target) begin = mid+1; else end = mid-1; }return end; } int main(){ int a,b; scanf("%d %d",&a,&b); for(int i=0;i<a;i++)scanf("%d",&num[i]); for(int i=0;i<b;i++){ scanf("%d",&a); if(i>0)printf(" "); printf("%d",binarySearch(0,b-1,a)); }return 0; }

问题发现

在这里插入图片描述
一共两处for循环

以前的我认为用for循环输入的时候,输入一次,按一次回车键
像这个第二个for循环输出的时候,应该是输入一个数,输出一个数,并不能达到题目所要求的输入一行,输出一行

但是实际上是可以的,我在调试程序的时候发现,第二次for循环输入的时候,连续输入五个数,a的值先是1,然后执行完一次,自动变成2,再运行一次,变成3,依次进行…🤦‍♂️


先写这些吧,等我以后学透了再补充,也希望大佬能指点一下。


__EOF__

本文作者坤舆小菜鸡
本文链接https://www.cnblogs.com/HBU-xuhaiyang/p/17223197.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   坤舆小菜鸡  阅读(31)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示