第一次做图形打印的题。懵逼。找其他人的解法来学习。意外的发现string有substr()这个好工具。
字符串长度设为len,n=n+2。令 n/3=n1 。把n平均分成三份,n1为截取商的部分, n2=n/3+n%3 ,余数部分全给n2。这使得n1已经尽可能的大,至多与n2相等,这是题目的要求。n2的另一种表达方法是: n2=n-n1*2 ,数值上是一样的。
1 #include <iostream> 2 #include<cstdio> 3 #include<string> 4 using namespace std; 5 int main() 6 { string s; 7 cin>>s; 8 int n=s.length(); 9 int n1= (n+2)/3; 10 int n2=n-n1*2; 11 string s1=s.substr(0,n1); 12 string s2=s.substr(n1,n2); 13 string s3=s.substr(n1+n2); 14 for(int i=0;i<n1;i++){ 15 cout<<s1[i]; 16 for(int j=0;j<n2;j++) 17 if(i!=n1-1) 18 cout<<" "; 19 else 20 cout<<s2[j]; 21 cout<<s3[n1-i-1]<<endl; 22 } 23 24 return 0; 25 }