选择题 共15道
阅读程序 共17道
完善程序 共10道
#include<iostream> #include<cmath> using namespace std; double f(double a,double b,double c){ double s=(a+b+c)/2; return sqrt(s*(s-a)*(s-b)*(s-c)); } int main(){ cout.flags(ios::fixed); cout.precision(4); int a,b,c; cin>>a>>b>>c; cout<<f(a,b,c)<<endl; return 0; }
假设输入的所有数都为不超过1000的正整数,完成下面的判断题和单选题:
当输入为“2 2 2”时,输出为“1.7321” ()
#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; }
假设输入的 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为正整数, solve2函数的作用是计算n所有的因子的平方和()
(寻找被移除的元素)问题:原有长度为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 missing_number = find_missing(nums); if (missing_number == ⑤) { cout << "Sequence is consecutive" << endl; }else{ cout << "Missing number 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] = ①; else if (j == 0) dp[i][j] = ②; else if (③) dp[i][j] = ④; else dp[i][j] = 1 + min(dp[i][j - 1], dp[i - 1][j], ⑤); } } 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; }