和为s的两个数字 和为s的连续正数序列
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s,如果有多对数字的和等于s,输出任意一对即可。
#include <iostream> using namespace std; //复杂度为O(n) bool findnumber(int data[],int length,int sum,int &num1,int &num2) { bool found=false; if(data==NULL||length<1) return found; int low=0,high=length-1; while(low<high) { long long cursum=data[low]+data[high]; if(cursum==sum) { num1=data[low]; num2=data[high]; found=true; break; } else if(cursum<sum) low++; else high--; } return found; } int main() { int data[5]={1,3,6,8,9}; int length=5,num1=0,num2=0,sum=1; bool found=findnumber(data,length,sum,num1,num2); cout<<found<<" "<<num1<<" "<<num2; }
输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
#include <iostream> using namespace std; void printnumber(int low,int high) { for(int i=low;i<=high;i++) cout<<i<<" "; cout<<'\n'; } void findnumber(int sum) { if(sum<3) return; int low=1,high=2,middle=(1+sum)/2,cursum=low+high; while(low<middle) //注意low,非high,s=偶数 { if(cursum==sum) printnumber(low,high); while(cursum>sum&&low<middle) { cursum-=low; low++; if(cursum==sum) printnumber(low,high); } high++; cursum+=high; } } int main() { findnumber(9); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端