做销售在哪些网站发贴,网站外链资源,山东一级造价师,公司名称注册查询系统我的代码:
思路就是把每一行看成一个字符串#xff0c;然后逐渐增加字符就行
#include iostream
#include vector
using namespace std;
int main()
{string s;int n;cin n; //读入行数cin s; //读入字符串vectorstringarr(n… 我的代码:
思路就是把每一行看成一个字符串然后逐渐增加字符就行
#include iostream
#include vector
using namespace std;
int main()
{string s;int n;cin n; //读入行数cin s; //读入字符串vectorstringarr(n); //定义string类数组if (n 1) //发现只弄成1行则直接原样输出就行{cout s endl;;return 0;}int now 0; //现在所在行int dx 1; //行偏移量for (int i 0; i s.size(); i){arr[now] s[i]; //将该行字符串加上字符now dx; //挪动所在行if (now 0 || now n-1) dx -dx; //如果到第一行或最后一行行偏移要取反}for (int i 0; i n; i)cout arr[i];return 0;
}
以前写的题解不是很好
#include iostream
#include vector //为了使用vector容器
using namespace std;
int main()
{int n; //多少行string s; //要输入的字符串cin n;cin s;vectorvectorchararr(n, vectorchar(1005)); //用vector容器弄二维数组n行列数先填大些后续会判断到底多少列默认数组里的量全是0int x 0; //arr数组的横坐标int y 0; //arr数组的纵坐标int k 0; //用来对字符串s进行索引int list_num 0; //定义arr数组的实际列数if(n1) //特殊判断{couts;return 0;}while (1) //不知道循环几次就死循环到时候跳过{int flag 1; //1代表还没终止(还没到字符串最后)for (int i 0; i n flag 1; i) //往下走只要没终止就一直把字符串s的量填到arr数组中{ //因为有n行所以循环n次arr[x][y] s[k]; //沿着路径往下走注意是后自增画图手写坐标就明白了if (k s.size()) //当k字符串s的大小则表示字符串的量全填进arr数组中了{flag 0; //0代表终止了到字符串最后了break; //跳出for循环}}list_num; //沿着路径一直往下走的走完了让实际列数list_num加1x x - 2; //若n为4则这里时x为4,-2后x变为2,这么是为了下面的后自增画图自己手写坐标就知道了)y y 1; //若n为4则这里时y为0.1后y1这么是为了下面的后自增画图自己手写坐标就知道了)for (int i 0; i n - 2 flag 1; i)//该斜着走循环次数是n-2次只要没终止就一直把字符串s的量填到arr数组中{list_num; //因为斜着走实际列数必定每次循环都会加1arr[x--][y] s[k]; //沿着路径该斜着走了注意是后自增画图手写坐标就明白了if (k s.size()){flag 0;break;}}if (flag 0) break; //当终止了(即到字符串最后了)结束while死循环}for (int i 0; i n; i) //开始输出arr数组中的数就按正常输出2维数组那样输出{for (int j 0; j list_num; j) //注意这里j是list_num (跟实际有n行in一个道理{if (arr[i][j] 0) continue; //当发现该坐标数组中的数是0则跳过出现0跟当初定义vector容器时有关else cout arr[i][j]; //否则就正常输出数组中正常的数}}return 0;
} 参考来自学长们题解