for(int i=1;i<n;i++){ for(int j=0;j<n;j++){ s[i][j]=s[0][(j+i)%n]; } }
以上代码会造成越界访问。因为string数组不是char二维数组,如果一位一位赋值会导致计算机不知道字符串有多长,使字符串被开得很短,如果数据范围大会越界。可以改成:
for(int i=1;i<n;i++){ for(int j=0;j<n;j++){ s[i]+=s[0][(j+i)%n]; } }