プログラムの実行結果は以下の通り。
A:x:1, y:1, z:3 B:x:1, y:4, z:1 全部で 14 段
これを図示すると以下の通り。

プログラムのソースは以下の通り。
#include "puzutl.h"
int main( int argc, cstring argv[])
{
char tmp[128];
map<int,string> A, B;
map<int,string>::iterator f;
for( int x=1; x< 10; x++) {
for( int y=1; y< 10; y++) {
for( int z=1; z< 10; z++) {
int step = 3*x + 2*y + 3*z;
if( (x+y+z)&1) { // 合計歩数が奇数
if( (f=A.find(step)) != A.end()) {
ps( "A:x:%d, y:%d, z:%d\n", x, y, z);
ps( "B:%s\n", (*f).second.c_str());
ps( "全部で %d 段\n", step);
exit(0);
}
sprintf( tmp, "x:%d, y:%d, z:%d", x, y, z);
B.insert( pair<int,string>(step,tmp));
}
else {
if( (f=B.find(step)) != B.end()) {
ps( "A:%s\n", (*f).second.c_str());
ps( "B:x:%d, y:%d, z:%d\n", x, y, z);
ps( "全部で %d 段\n", step);
exit(0);
}
sprintf( tmp, "x:%d, y:%d, z:%d", x, y, z);
A.insert( pair<int,string>(step,tmp));
}
}
}
}
return 0;
}