<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
由題目要求可知 題目要求先建立一個r行c列的矩陣
然後輸入一串字串 字串長度肯定小於r*c/5
由A C M的表示方式可以看出每個字元由5位的二進位制位系統表示(無符號位)
那麼我們首先可以先建立一個字串型別
string a; cin>>a;
rt 字母表示它是26字母表中第幾個字母
很多人第一時間想用陣列11對應 或者switch語句選擇
但轉念一想就知道太麻煩了 所以這裡用字元的ASCII碼減去64來表示它的數位形式
轉ASCII碼都知道 強型別轉換
由於不止一個字元 為了提高程式碼的複用性 我們專門寫個函數來返回字母的數位形式的二進位制值
int bit(char a) //定義一個將字母轉換為二進位制數的函數 返回二進位制數 { int num=int(a)-64; int result = 0, j = 1; while(num){ result = result + j * (num % 2); num = num / 2; j = j * 10; } return result; }
二進位制值有了 還得確保每個字母都能轉換為5位的二進位制系統
故在迴圈之中再套迴圈 像00011這種啥資料型別都不是的玩意兒 最好直接給它套陣列裡去 所以我們先定義個陣列
然後按流程把1和0放進去 並通過while迴圈補全0
for(int count0=0;count0<a.size();count0++) { int Tbits=bit(a[count0]); //得到二進位制數 digits=judge(Tbits); //判斷位數 將5位2進位制數補全0 times=digits-1; //獲取位數 //從而將二進位制數各個位數上的數位準確的填入陣列 while(digits!=5) { arr[s]=0; digits++; s++; } while(Tbits!=0) { d=Tbits%10; // 從最小位數開始 arr[s+times]=d; Tbits/=10; times--; } s=5*(count0+1); //每個數都是5位 故讓每回圈完一個字母讓索引+5 }
這時我就達到了把每個5位二進位制位系統的值都放進陣列裡去
但是根據題意可知 有空缺的地方 需要用0填充 故寫個for迴圈將剩下的空用0填充
for(int count1=a.size()*5;count1<(r*c);count1++) { arr[count1]=0; //將剩餘的位置用0填充 }
重頭戲來了
如何螺旋式將這個陣列的每個數填到二維陣列中去呢?
根據題意可知 填充方向是右下左上
故思路是:
先填充第一行 再填充最後一列 再填充最後一行 再填充第一列
填充完第一行 起始行變數+1
填充完最後一列 末列變數-1
填充完最後一行 末行變數-1
填充完第一列 起始列變數+1
程式碼如下:
int iStart=0,iEnd=r-1,jStart=0,jEnd=c-1,times1=0,i,j; while(iEnd>=iStart&&jEnd>=jStart){ //上面的行 for(j=jStart;j<=jEnd;j++){ array[iStart][j]=arr[times1]; times1++; } iStart++; //右邊的列 for(i=iStart;i<=iEnd;i++){ array[i][jEnd]=arr[times1]; times1++; } jEnd--; //下面的行 if(iEnd>=iStart){ for(j=jEnd;j>=jStart;j--){ array[iEnd][j]=arr[times1]; times1++; } iEnd--; } //左邊的列 if(jEnd>=jStart){ for(i=iEnd;i>=iStart;i--){ array[i][jStart]=arr[times1]; times1++; } jStart++; } }
根據題意 還有一個大坑 這個噁心的出題人讓我們正常列印 即第一行 第二行 第三行....
真是處處都是坑
故直接一個巢狀for迴圈
for(i=0;i<r;i++){ for(j=0;j<c;j++){ cout<<array[i][j]; } } }
完成!
到此這篇關於C++二維陣列螺旋加密資訊的文章就介紹到這了,更多相關C++二維陣列螺旋加密內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45