《演算法》C/C++ 圖形處理

來源:互聯網
上載者:User

標籤:out   gpo   down   包含   log   9.png   技術   sync   sig   

概述
  • 一般圖形輸出無法就是用迴圈輸出 ,提前構造好圖形。
  • 兩種方式

    ** 類比法直接輸出**
    ** 二維數組 構造輸出**

問題描述利用字母可以組成一些美麗的圖形,下面給出了一個例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC這是一個5行7列的圖形,請找出這個圖形的規律,並輸出一個n行m列的圖形。輸入格式輸入一行,包含兩個整數n和m,分別表示你要輸出的圖形的行數的列數。輸出格式輸出n行,每個m個字元,為你的圖形。範例輸入5 7範例輸出ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC
  • 題目地址:http://lx.lanqiao.cn/problem.page?gpid=T7

  • 代碼

解法一 直接輸出 類比法
#include <iostream>#include <cstring>#include <string>#include <algorithm>#include <cmath>using namespace std;int main(){    string src="ABCDEFGHIJKLMNOPQRSTUVWXYZ";    int length=src.length();    int n,m,j=0;string sum;string temp;     cin>>n>>m;     int k=m;     for(int i=0;i<n;i++){            sum="";        for(j=0;j<k;j++){            sum+=src[j];        }        k--;        if(i!=0){            temp+=src[i];        }        reverse(temp.begin(),temp.end());        cout<<temp+sum<<endl;        reverse(temp.begin(),temp.end());    }}
解法二 二維數組 直接輸出
#include <iostream>  using namespace std;   //方法二  int main()   {      unsigned int n,m;      cin>>n>>m;      int array[n][m];      for(int i=0;i<m;i++)//給第一行賦值65,66,67... 轉化為char型即為A,B,C...      {          array[0][i] = i + 65;      }      for(int i=1;i<n;i++)      {             for(int j=1;j<m;j++)//從第二行開始,每一行從第二位元開始的值都是上一行的右移一位後直接搬下來的           {              array[i][j] = array[i-1][j-1];          }          array[i][0] = array[i-1][0] + 1;//給每一行的第一位賦值       }      for(int i=0;i<n;i++)//輸出       {          for(int j=0;j<m;j++)          {              cout<<(char)array[i][j];          }          cout<<endl;      }      return 0;  }   
解法三 找規律 這道題 與常規的還是有些不同的
  • 根據規律 可以看出來 A為根座標開始向兩邊移動 ,接法非常巧妙

#include <iostream>#include <cstring>#include <string>#include <algorithm>#include <cmath>using namespace std;int main(){   int n,m;   ios::sync_with_stdio(false);   cin>>n>>m;   for(int i=1;i<=n;i++){        for(int j=1;j<=m;j++){            cout<<(char)(fabs(j-i)+'A');        }        cout<<endl;   }}
總結
  • 輸出圖形 是對迴圈能力的最重要的掌控 ,其中還涉及到了矩陣(旋轉, 乘法,出發等)相關的知識要點。

《演算法》C/C++ 圖形處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.