题意:
方法一:
找规律
思路:
#include <bits/stdc++.h> using namespace std; int main(){ int m; while(cin >> m){ int x=(m-1)*m/2+1;//m个连续奇数中第一个奇数的序号 string res=""; res+=to_string(2*x-1);//遍历第一个奇数 x++; for(int i=1;i<m;i++){//遍历剩下的奇数 res+='+'; res+=to_string(2*x-1); x++; } cout << res << endl; } return 0; }
时间复杂度:空间复杂度:
方法二:
暴力模拟
思路:先遍历前m-1行的所有奇数,最后遍历第m行的m个奇数。最后,直接输出。
#include <bits/stdc++.h> using namespace std; int main(){ int m; while(cin >> m){ string res=""; int x=-1; for(int i=1;i<m;i++){//遍历前m-1行 for(int j=0;j<i;j++){ x+=2; } } x+=2;//第m行的第一个奇数 res+=to_string(x); x+=2; for(int i=1;i<m;i++){//第m行的其余奇数 res+='+'; res+=to_string(x); x+=2; } cout << res << endl; } return 0; }
时间复杂度:空间复杂度: