网站跳出率 查询,怀化网络推广哪家服务好,可以免费进的服务器网站,wordpress二级导航问题和序列的区间有关#xff0c;且需要操作两个变量#xff0c;可以用两个下标#xff08;指针#xff09;i 和 j 扫描区间。
1#xff0c;反向扫描#xff0c;i 从头#xff0c;j 从尾#xff0c;在中间相遇。
例1.1#xff08;P37#xff09;
找指定和的整数对…问题和序列的区间有关且需要操作两个变量可以用两个下标指针i 和 j 扫描区间。
1反向扫描i 从头j 从尾在中间相遇。
例1.1P37
找指定和的整数对
#includebits/stdc.h
using namespace std;
const int N100005;
int n,m;
int a[N];
int main(){cinnm;for(int i0;in;i) cina[i];sort(a,an);int i0,jn-1;while(ij){int suma[i]a[j];if(summ) i;if(summ) j--;if(summ){couta[i] a[j]endl;i;}}return 0;
}
例1.2
判断回文串
#includebits/stdc.h
using namespace std;
int main(){int n; cinn;while(n--){string s; cins;bool ans true;int i0,js.size()-1;while(ij){if(s[i]!s[j]){ansfalse; break;}i,j--;}if(ans) coutYesendl;else coutNoendl;}return 0;
}
允许删除或插入本题只考虑删除最多一个字符判断是否能构成回文字符串。
#includebits/stdc.h
using namespace std;
int main(){int n; cinn;bool f;while(n--){string s; cins;bool ans true;ftrue;int i0,js.size()-1;while(ijf){if(s[i]!s[j]f){f!f;int iii1,jjj;while(iijj){if(s[ii]!s[jj]) {ansfalse;break;}ii,jj--;}int i2i,j2j-1;while(i2j2){if(s[i2]!s[j2]) {ansfalse;break;}i2,j2--;}}if(f)i,j--;}if(ans) coutYesendl;else coutNoendl;}return 0;
}
2同向扫描
2.1 寻找区间和
给定一个长度为 n 的数组和一个数 s 在这个数组中找一个区间使这个区间的数组元素之和等于 s 。输出区间的起点和终点位置。