C++,264
#include <iostream>
#include <sstream>
#include <string>
using namespace std;int main(){string l="1\n";for(;;){ostringstream o;int e=1;char m;cout<<l;for(int i=1;i<l.size();i++){m=l[i-1];if(l[i]==m)e++;else if(e){if(m!='\n')o<<e<<m;e=1;}}l=o.str()+'\n';}return 0;}
带有适当缩进:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
string l="1\n";
for(;;)
{
ostringstream o;
int e=1;
char m;
cout<<l;
for(int i=1; i<l.size(); i++)
{
m=l[i-1];
if(l[i]==m)
e++;
else if(e)
{
if(m!='\n')
o<<e<<m;
e=1;
}
}
l=o.str()+'\n';
}
return 0;
}
示例输出:
matteo@teoubuntu:~/cpp$ g++ morris.cpp -O3 -o morris.x && ./morris.x | head1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211
C++,276分(含额外加分)
#include <iostream>
#include <sstream>
#include <string>
using namespace std;int main(){string l;getline(cin,l);for(;;){ostringstream o;int e=1;char m;l+='\n';cout<<l;for(int i=1;i<l.size();i++){m=l[i-1];if(l[i]==m)e++;else if(e){if(m!='\n')o<<e<<m;e=1;}}l=o.str();}return 0;}
带有适当缩进:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
string l;
getline(cin,l);
for(;;)
{
ostringstream o;
int e=1;
char m;
l+='\n';
cout<<l;
for(int i=1; i<l.size(); i++)
{
m=l[i-1];
if(l[i]==m)
e++;
else if(e)
{
if(m!='\n')
o<<e<<m;
e=1;
}
}
l=o.str();
}
return 0;
}
示例输出:
matteo@teoubuntu:~/cpp$ g++ morris.cpp -O3 -o morris.x && ./morris.x | head
7754 <-- notice: this was inserted manually
7754
271514
121711151114
1112111731153114
31123117132115132114
13211213211711131221151113122114
11131221121113122117311311222115311311222114
3113112221123113112221171321132132211513211321322114
132113213221121321132132211711131221131211132221151113122113121113222114
111312211312111322211211131221131211132221173113112221131112311332211531131122211311123113322114