全部知识点
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int f(string x,string y){
int m=x.size();
int n=y.size();
vector<vector<int>> v(m+1,vector<int>(n+1,0));
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
if(x[i-1]==y[j-1]){
v[i][j]=v[i-1][j-1]+1;
}else{
v[i][j]=max(v[i-1][j],v[i][j-1]);
}
}
}
return v[m][n];
}
bool g(string x,string y){
if(x.size() != y.size()){
return false;
}
return f(x+x,y)==y.size();
}
int main(){
string x,y;
cin>>x>>y;
cout<<g(x,y)<<endl;
return 0;
}当输入为 "csp-j p-jcs" 时,输出为( )
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int f(string x,string y){
int m=x.size();
int n=y.size();
vector<vector<int>> v(m+1,vector<int>(n+1,0));
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
if(x[i-1]==y[j-1]){
v[i][j]=v[i-1][j-1]+1;
}else{
v[i][j]=max(v[i-1][j],v[i][j-1]);
}
}
}
return v[m][n];
}
bool g(string x,string y){
if(x.size() != y.size()){
return false;
}
return f(x+x,y)==y.size();
}
int main(){
string x,y;
cin>>x>>y;
cout<<g(x,y)<<endl;
return 0;
}当输入为“csppsc spsccp”时,输出为:( )
#include <iostream>
#include <cmath>
using namespace std;
int solve1(int n){
return n*n;
}
int solve2(int n){
int sum=0;
for(int i=1;i<=sqrt(n);i++){
if(n%i==0){
if(n/i==i){
sum+=i*i;
}else{
sum+=i*i+(n/i)*(n/i);
}
}
}
return sum;
}
int main(){
int n;
cin>>n;
cout<<solve2(solve1(n))<<" "<<solve1((solve2(n)))<<endl;
return 0;
}假设输入的n是绝对值不超过1000的整数,完成下面的判断题和单选题:
如果输入的n为正整数,solve2函数的作用是计算n所有的因子的平方和( )
#include <iostream>
#include <cmath>
using namespace std;
int solve1(int n){
return n*n;
}
int solve2(int n){
int sum=0;
for(int i=1;i<=sqrt(n);i++){
if(n%i==0){
if(n/i==i){
sum+=i*i;
}else{
sum+=i*i+(n/i)*(n/i);
}
}
}
return sum;
}
int main(){
int n;
cin>>n;
cout<<solve2(solve1(n))<<" "<<solve1((solve2(n)))<<endl;
return 0;
}假设输入的n是绝对值不超过1000的整数,完成下面的判断题和单选题:
第13~14行的作用是避免n的平方根因子i(或n/i)进入第16行而被计算两次()
#include <iostream>
#include <cmath>
using namespace std;
int solve1(int n){
return n*n;
}
int solve2(int n){
int sum=0;
for(int i=1;i<=sqrt(n);i++){
if(n%i==0){
if(n/i==i){
sum+=i*i;
}else{
sum+=i*i+(n/i)*(n/i);
}
}
}
return sum;
}
int main(){
int n;
cin>>n;
cout<<solve2(solve1(n))<<" "<<solve1((solve2(n)))<<endl;
return 0;
}假设输入的n是绝对值不超过1000的整数,完成下面的判断题和单选题:
如果输入的n为质数,solve2(n)的返回值为n²+1()
#include <iostream>
#include <cmath>
using namespace std;
int solve1(int n){
return n*n;
}
int solve2(int n){
int sum=0;
for(int i=1;i<=sqrt(n);i++){
if(n%i==0){
if(n/i==i){
sum+=i*i;
}else{
sum+=i*i+(n/i)*(n/i);
}
}
}
return sum;
}
int main(){
int n;
cin>>n;
cout<<solve2(solve1(n))<<" "<<solve1((solve2(n)))<<endl;
return 0;
}假设输入的n是绝对值不超过1000的整数,完成下面的判断题和单选题:
如果输入的n为质数p的平方,那么solve2(n)的返回值为( )
#include <iostream>
#include <cmath>
using namespace std;
int solve1(int n){
return n*n;
}
int solve2(int n){
int sum=0;
for(int i=1;i<=sqrt(n);i++){
if(n%i==0){
if(n/i==i){
sum+=i*i;
}else{
sum+=i*i+(n/i)*(n/i);
}
}
}
return sum;
}
int main(){
int n;
cin>>n;
cout<<solve2(solve1(n))<<" "<<solve1((solve2(n)))<<endl;
return 0;
}假设输入的n是绝对值不超过1000的整数,完成下面的判断题和单选题:
当输入为正整数时,第一项减去第二项的差值一定( )
#include <iostream>
#include <cmath>
using namespace std;
int solve1(int n){
return n*n;
}
int solve2(int n){
int sum=0;
for(int i=1;i<=sqrt(n);i++){
if(n%i==0){
if(n/i==i){
sum+=i*i;
}else{
sum+=i*i+(n/i)*(n/i);
}
}
}
return sum;
}
int main(){
int n;
cin>>n;
cout<<solve2(solve1(n))<<" "<<solve1((solve2(n)))<<endl;
return 0;
}假设输入的n是绝对值不超过1000的整数,完成下面的判断题和单选题:
当输入为“5”时,输出为( )
(寻找被移除的元素)问题,原有长度为n+1,公差为1的等差升序数列,将序列输入到程序的数组时移除了一个元素,导致长度为n的升序数组可能不再连续,除非被移除的是第一个或最后一个元素。需要在数组不连续时,找出被移除的元素。
#include <iostream>
#include <vector>
using namespace std;
int find_missing(vector<int>& nums){
int left=0,right=nums.size()-1;
while(left<right){
int mid=left+(right-left)/2;
if(nums[mid]==mid+①){
②;
}else{
③;
}
}
return ④;
}
int main(){
int n;
cin>>n;
vector<int> nums(n);
for(int i=0;i<n;i++) cin>>nums[i];
int misssing_number=find_missing(nums);
if(missing_number==⑤){
cout<<"Sequence is consecutive"<<endl;
}else{
cout<<"Missing numbers is"<<missing_number<<endl;
}
return 0;
}①处应填( )
(寻找被移除的元素)问题,原有长度为n+1,公差为1的等差升序数列,将序列输入到程序的数组时移除了一个元素,导致长度为n的升序数组可能不再连续,除非被移除的是第一个或最后一个元素。需要在数组不连续时,找出被移除的元素。
#include <iostream>
#include <vector>
using namespace std;
int find_missing(vector<int>& nums){
int left=0,right=nums.size()-1;
while(left<right){
int mid=left+(right-left)/2;
if(nums[mid]==mid+①){
②;
}else{
③;
}
}
return ④;
}
int main(){
int n;
cin>>n;
vector<int> nums(n);
for(int i=0;i<n;i++) cin>>nums[i];
int misssing_number=find_missing(nums);
if(missing_number==⑤){
cout<<"Sequence is consecutive"<<endl;
}else{
cout<<"Missing numbers is"<<missing_number<<endl;
}
return 0;
}②处应填( )
(寻找被移除的元素)问题,原有长度为n+1,公差为1的等差升序数列,将序列输入到程序的数组时移除了一个元素,导致长度为n的升序数组可能不再连续,除非被移除的是第一个或最后一个元素。需要在数组不连续时,找出被移除的元素。
#include <iostream>
#include <vector>
using namespace std;
int find_missing(vector<int>& nums){
int left=0,right=nums.size()-1;
while(left<right){
int mid=left+(right-left)/2;
if(nums[mid]==mid+①){
②;
}else{
③;
}
}
return ④;
}
int main(){
int n;
cin>>n;
vector<int> nums(n);
for(int i=0;i<n;i++) cin>>nums[i];
int misssing_number=find_missing(nums);
if(missing_number==⑤){
cout<<"Sequence is consecutive"<<endl;
}else{
cout<<"Missing numbers is"<<missing_number<<endl;
}
return 0;
}③处应填( )
(寻找被移除的元素)问题,原有长度为n+1,公差为1的等差升序数列,将序列输入到程序的数组时移除了一个元素,导致长度为n的升序数组可能不再连续,除非被移除的是第一个或最后一个元素。需要在数组不连续时,找出被移除的元素。
#include <iostream>
#include <vector>
using namespace std;
int find_missing(vector<int>& nums){
int left=0,right=nums.size()-1;
while(left<right){
int mid=left+(right-left)/2;
if(nums[mid]==mid+①){
②;
}else{
③;
}
}
return ④;
}
int main(){
int n;
cin>>n;
vector<int> nums(n);
for(int i=0;i<n;i++) cin>>nums[i];
int misssing_number=find_missing(nums);
if(missing_number==⑤){
cout<<"Sequence is consecutive"<<endl;
}else{
cout<<"Missing numbers is"<<missing_number<<endl;
}
return 0;
}④处应填( )
(寻找被移除的元素)问题,原有长度为n+1,公差为1的等差升序数列,将序列输入到程序的数组时移除了一个元素,导致长度为n的升序数组可能不再连续,除非被移除的是第一个或最后一个元素。需要在数组不连续时,找出被移除的元素。
#include <iostream>
#include <vector>
using namespace std;
int find_missing(vector<int>& nums){
int left=0,right=nums.size()-1;
while(left<right){
int mid=left+(right-left)/2;
if(nums[mid]==mid+①){
②;
}else{
③;
}
}
return ④;
}
int main(){
int n;
cin>>n;
vector<int> nums(n);
for(int i=0;i<n;i++) cin>>nums[i];
int misssing_number=find_missing(nums);
if(missing_number==⑤){
cout<<"Sequence is consecutive"<<endl;
}else{
cout<<"Missing numbers is"<<missing_number<<endl;
}
return 0;
}⑤处应填( )
(编辑距离)给定两个字符串,每次操作可以选择删除(Delete)、插入(Insert)、替换(Replace),一个字符,求将第一个字符串转换为第二个字符串所需要的最少操作次数。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int min(int x,int y,int z){
return min(min(x,y),z);
}
int edit_dist_dp(string str1,string str2){
int m=str1.length();
int n=str2.length();
vector<vector<int>> dp(m+1,vector<int>(n+1));
for(int i=0;i<=m;i++){
for(int j=0;j<=n;j++){
if(i==0)
dp[i][j]=(1);
else if(j==0)
dp[i][j]=(2);
else if((3))
dp[i][j]=(4);
else
dp[i][j]=1+min(dp[i][j-1],dp[i-1][j],(5));
}
}
return dp[m][n];
}
int main(){
string str1,str2;
cin>>str1>>str2;
cout<<"Mininum number of operation:"
<<edit_dist_dp(str1,str2)<<endl;
return 0;
}①处应填( )
(编辑距离)给定两个字符串,每次操作可以选择删除(Delete)、插入(Insert)、替换(Replace),一个字符,求将第一个字符串转换为第二个字符串所需要的最少操作次数。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int min(int x,int y,int z){
return min(min(x,y),z);
}
int edit_dist_dp(string str1,string str2){
int m=str1.length();
int n=str2.length();
vector<vector<int>> dp(m+1,vector<int>(n+1));
for(int i=0;i<=m;i++){
for(int j=0;j<=n;j++){
if(i==0)
dp[i][j]=(1);
else if(j==0)
dp[i][j]=(2);
else if((3))
dp[i][j]=(4);
else
dp[i][j]=1+min(dp[i][j-1],dp[i-1][j],(5));
}
}
return dp[m][n];
}
int main(){
string str1,str2;
cin>>str1>>str2;
cout<<"Mininum number of operation:"
<<edit_dist_dp(str1,str2)<<endl;
return 0;
}②处应填( )
(编辑距离)给定两个字符串,每次操作可以选择删除(Delete)、插入(Insert)、替换(Replace),一个字符,求将第一个字符串转换为第二个字符串所需要的最少操作次数。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int min(int x,int y,int z){
return min(min(x,y),z);
}
int edit_dist_dp(string str1,string str2){
int m=str1.length();
int n=str2.length();
vector<vector<int>> dp(m+1,vector<int>(n+1));
for(int i=0;i<=m;i++){
for(int j=0;j<=n;j++){
if(i==0)
dp[i][j]=(1);
else if(j==0)
dp[i][j]=(2);
else if((3))
dp[i][j]=(4);
else
dp[i][j]=1+min(dp[i][j-1],dp[i-1][j],(5));
}
}
return dp[m][n];
}
int main(){
string str1,str2;
cin>>str1>>str2;
cout<<"Mininum number of operation:"
<<edit_dist_dp(str1,str2)<<endl;
return 0;
}③处应填( )
(编辑距离)给定两个字符串,每次操作可以选择删除(Delete)、插入(Insert)、替换(Replace),一个字符,求将第一个字符串转换为第二个字符串所需要的最少操作次数。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int min(int x,int y,int z){
return min(min(x,y),z);
}
int edit_dist_dp(string str1,string str2){
int m=str1.length();
int n=str2.length();
vector<vector<int>> dp(m+1,vector<int>(n+1));
for(int i=0;i<=m;i++){
for(int j=0;j<=n;j++){
if(i==0)
dp[i][j]=(1);
else if(j==0)
dp[i][j]=(2);
else if((3))
dp[i][j]=(4);
else
dp[i][j]=1+min(dp[i][j-1],dp[i-1][j],(5));
}
}
return dp[m][n];
}
int main(){
string str1,str2;
cin>>str1>>str2;
cout<<"Mininum number of operation:"
<<edit_dist_dp(str1,str2)<<endl;
return 0;
}④处应填( )
(编辑距离)给定两个字符串,每次操作可以选择删除(Delete)、插入(Insert)、替换(Replace),一个字符,求将第一个字符串转换为第二个字符串所需要的最少操作次数。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int min(int x,int y,int z){
return min(min(x,y),z);
}
int edit_dist_dp(string str1,string str2){
int m=str1.length();
int n=str2.length();
vector<vector<int>> dp(m+1,vector<int>(n+1));
for(int i=0;i<=m;i++){
for(int j=0;j<=n;j++){
if(i==0)
dp[i][j]=(1);
else if(j==0)
dp[i][j]=(2);
else if((3))
dp[i][j]=(4);
else
dp[i][j]=1+min(dp[i][j-1],dp[i-1][j],(5));
}
}
return dp[m][n];
}
int main(){
string str1,str2;
cin>>str1>>str2;
cout<<"Mininum number of operation:"
<<edit_dist_dp(str1,str2)<<endl;
return 0;
}⑤处应填( )
在linux 系统终端中,以下哪个命令用于创建一个新的目录?()
0,1,2,3,4 中选取4个数字,能组成()个不同四位数。(注: 最小的四位数是 1000最大的四位数是9999)