NOIP2008 普及組T4 立體圖 解題報告-S.B.S.(施工未完成)

題目描述

小淵是個聰明的孩子,他經常會給周圍的小朋友們將寫自己認為有趣的內容。最近,他準備給小朋友們講解立體圖,請你幫他畫出立體圖。

小淵有一塊面積為m*n的矩形區域,上面有m*n個邊長為1的格子,每個格子上堆了一些同樣大小的積木(積木的長寬高都是1),小淵想請你打印出這些格子的立體圖。我們定義每個積木為如下格式,并且不會做任何翻轉旋轉,只會嚴格以這一種形式擺放:

每個頂點用1個加號’+’表示,長用3個”-”表示,寬用1個”/”,高用兩個”|”表示。字符’+’,”-”,”/”,”|”的ASCII碼分別為43,45,47,124。字符’.’(ASCII碼46)需要作為背景輸出,即立體圖里的空白部分需要用’.’來代替。立體圖的畫法如下面的規則:

若兩塊積木左右相鄰,圖示為:

若兩塊積木上下相鄰,圖示為:

若兩塊積木前后相鄰,圖示為:

立體圖中,定義位于第(m,1)的格子(即第m行第1列的格子)上面自底向上的第一塊積木(即最下面的一塊積木)的左下角頂點為整張圖最左下角的點。

輸入輸出格式

輸入格式:

?

輸入文件drawing.in第一行有用空格隔開的2個整數m和n,表示有m*n個格子(1<=m,n<=50)。

接下來的m行,是一個m*n的矩陣,每行有n個用空格隔開的整數,其中第i行第j列上的整數表示第i行第j列的個子上摞有多少個積木(1<=每個格子上的積木數<=100)。

?

輸出格式:

?

輸出文件drawing.out中包含題目要求的立體圖,是一個K行L列的字符串矩陣,其中K和L表示最少需要K行L列才能按規定輸出立體圖。

?

輸入輸出樣例

輸入樣例#1:
3 4
2 2 1 2
2 2 1 1
3 2 1 2
輸出樣例#1:
......+---+---+...+---+
..+---+  /   /|../   /|
./   /|-+---+ |.+---+ |
+---+ |/   /| +-|   | +
|   | +---+ |/+---+ |/|
|   |/   /| +/   /|-+ |
+---+---+ |/+---+ |/| +
|   |   | +-|   | + |/.
|   |   |/  |   |-| +..
+---+---+---+---+ |/...
|   |   |   |   | +....
|   |   |   |   |/.....
+---+---+---+---+......

說明

NOIP2008普及組第四題

---------------------------------我是分割線------------------------------------------------------------------

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<algorithm>
 6 #include<queue>
 7 #include<cstdlib>
 8 using namespace std;
 9 int num[51][51]={{0}};
10 int high=-99999,wide=-99999;
11 char map[301][301]={{'.'}};
12 int read(){
13     int x=0,f=1;char ch=getchar();
14     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
15     while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
16     return x*f;
17 }
18 void print(int,int);
19 int main()
20 {
21     std::ios::sync_with_stdio(false);
22     int n,m;
23     cin>>m>>n;
24     wide=4*n+2*m+1;
25     for(int i=1;i<=m;i++)
26      for(int j=1;j<=n;j++)
27     {
28             cin>>num[i][j]; 
29             high=max(high,num[i][j]*3+2*(m-i+1)+1);
30     }
31     for(int i=1;i<=m;i++) 
32      for(int j=1;j<=n;j++) 
33       for(int k=0;k<num[i][j];k++)
34       {
35             int x=high-3*(k+2)-2*(m-i)+1;
36             int y=4*j+2*(m-i-1)-1;
37             print(x,y); 
38       }
39     for(int i=1;i<=high;i++)
40     {
41         for(int j=1;j<=wide;j++)
42          cout<<map[i][j];
43         cout<<endl;  
44     }
45     return 0;
46 }
47 void print(int a,int b){
48     int x,y;
49     x=a+3;y=b;
50     map[x][y]='+';
51     map[x][y+1]='-';
52     map[x][y+2]='-';
53     map[x][y+3]='-';
54     map[x][y+4]='+';
55     map[x-1][y]='|';
56     map[x-1][y+1]=' ';
57     map[x-1][y+2]=' ';
58     map[x-1][y+3]=' ';
59     map[x-1][y+4]='|';
60     map[x-1][y+5]='/';
61     map[x-2][y]='|';
62     map[x-2][y+1]=' ';
63     map[x-2][y+2]=' ';
64     map[x-2][y+3]=' ';
65     map[x-2][y+4]='|';
66     map[x-2][y+5]=' ';
67     map[x-2][y+6]='+';
68     map[x-3][y]='+';
69     map[x-3][y+1]='-';
70     map[x-3][y+2]='-';
71     map[x-3][y+3]='-';
72     map[x-3][y+4]='+';
73     map[x-3][y+5]=' ';
74     map[x-3][y+6]='|';
75     map[x-4][y+1]='/';
76     map[x-4][y+2]=' ';
77     map[x-4][y+3]=' ';
78     map[x-4][y+4]=' ';
79     map[x-4][y+5]='/';
80     map[x-4][y+6]='|';
81     map[x-5][y+2]='+';
82     map[x-5][y+3]='-';
83     map[x-5][y+4]='-';
84     map[x-5][y+5]='-';
85     map[x-5][y+6]='+';
86     return;
87 }
View Code

?

轉載于:https://www.cnblogs.com/SBSOI/p/5575006.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396117.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396117.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396117.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

及時溝通的重要性_溝通與代碼同樣重要

及時溝通的重要性by Andrea Goulet通過安德烈古萊特(Andrea Goulet) 溝通與代碼同樣重要 (Communication Is Just As Important As Code) This past weekend, I had the pleasure of being the closing keynote at Ruby Nation. I expanded on one of the core values at Corg…

linux telnet smtp,如何使用Telnet測試IMAP與SMTP

1 前言筆者有時候調試郵件服務器需要使用Telnet直接去操縱IMAP與SMTP的服務&#xff0c;所以整理此文。2 最佳實踐2.1 IMAP服務2.1.1 使用Telnet鏈接IMAP服務telnet imap.cmdschool.org 143信息顯示如下&#xff0c;Trying 113.96.209.109...Connected to imap.cmdschool.org.E…

圓柱體積怎么算立方公式_圓柱體積公式怎么算

圓柱的體積計算公式同仁實驗學校各年級組備課教師教案教案設計 課題 教學內容年級 六年級 科目 圓柱體積的計算公式數學教案類型新授P25 頁例 5 及補充例題&#xff0c;完成“做一做”及練習五第 1~3 題。授課人1、通過用切割拼合的方法借助長方體的體積公式推導出圓柱的體積公…

Python學習筆記7:函數對象及函數對象作參數

一、lambda函數比如&#xff1a;fun1 lambda x,y: x y print fun1(3,4)輸出&#xff1a;7lambda生成一個函數對象。該函數參數為x,y&#xff0c;返回值為xy。函數對象賦給func。func的調用與正常函數無異。上面的代碼等價于&#xff1a;def fun2(x, y):return x y二、函數作…

github 建立_建立在線社區:GitHub教師

github 建立by Gitter通過吉特 建立在線社區&#xff1a;GitHub教師 (Building Online Communities: GitHub Teacher) We talked to the GitHub Training team about the free GitHub courses they offer to both developers and non-developers, as well as about the commun…

廣數25i系統倒刀回刀m代碼_廣州數控系統GSK25i參數.pdf

GSK25i 銑床加工中心數控系統 使用手冊(第 3 分冊: 參數篇)在本使用手冊中&#xff0c;我們將盡力敘述各種與該系統操作相關的事項。限于篇幅限制及產品具體使用等原因&#xff0c;不可能對系統中所有不必做和/或不能做的操作進行詳細的敘述。因此&#xff0c;本使用手冊中沒有…

linux離線安裝rjava,無法在ubuntu系統上安裝rJava

我已經看過一些與此相關的帖子…但是所有建議的解決方案看起來似乎不工作….我在EC2實例中運行R&#xff0c;并運行以下命令來嘗試安裝rJava但無效…任何幫助將不勝感激。> install.packages("rJava")Installing package(s) into ‘/home/ubuntu/R/library’(as ‘…

HBase基礎知識(三):HBase架構進階、讀寫流程、MemStoreFlush、StoreFile Compaction、Region Split

1. 架構原理 1&#xff09;StoreFile 保存實際數據的物理文件&#xff0c;StoreFile以HFile的形式存儲在HDFS上。每個Store會有一個或多個StoreFile&#xff08;HFile&#xff09;&#xff0c;數據在每個StoreFile中都是有序的。 2&#xff09;MemStore 寫緩存&#xff0c;由于…

CentOS6.7-64bit編譯hadoop2.6.4

1.下載maven&#xff08;apache-maven-3.3.3-bin.tar.gz&#xff09; http://archive.apache.org/dist/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz 2.安裝maven tar -zxvf apache-maven-3.3.3-bin.tar.gz -C /usr/local 3.添加環境變量 vim /etc/profileexpo…

第一章節測試

大家在做第一章測試題時&#xff0c;需要復習如下相關知識點&#xff1a;編譯型VS解釋型、變量名規范、數據類型、程序交互、格式化輸出、運算符、流程控制。1.簡述編譯型與解釋型語言的區別&#xff0c;且分別列出你知道的那些語言屬于編譯型&#xff0c;哪些屬于解釋型。2.執…

VS2015升級Update2之后Cordova程序提示:此應用程序無法在此電腦上運行

VS2015在升級到Update2之后&#xff0c;有可能出現如下異常&#xff0c;在運行Cordova項目時提示&#xff1a; 查看輸出面板會有亂碼錯誤信息&#xff1a; 出現此問題的原因是在于npm程序損壞了。vs調用的npm程序并不是在node安裝目錄下的npm&#xff0c;而是在&#xff1a; C:…

gitter 卸載_最佳Gitter渠道:學習編碼

gitter 卸載by Gitter通過吉特 最佳Gitter渠道&#xff1a;學習編碼 (Best Gitter channels for: Learning to Code) If you’re learning to code in 2016, you’re in luck — thanks to a huge range of helpful websites, MOOCs, books, and learners’ communities, you’…

雙鑒探測器是哪兩種探測方式結合_老師傅帶你看懂火災探測器的種類和基本原理,看完漲知識了...

為什么極早期的火災探測十分關鍵&#xff1f;火災的產生我們生活的環境中充滿著大量的可燃物質&#xff0c;空氣中的氧氣含量通常也足夠滿足燃燒條件。但是還有另外一個形成火災的條件就是&#xff1a;點火能量必須可以驅使氧化的過程開始。點火能量源可以是多種多樣的&#xf…

JS入門熟知

JS是面向對象的語言 封裝繼承多態聚集&#xff08;對象中具有引用其他對象的能力&#xff09;JS使用中絕大多數情況不需要進行面向對象的設計,很多情況是使用已經設計好,準備好的對象,基于對象的語言. JS的使用&#xff08;引入&#xff09; jsp、html中直接在script標簽中書寫…

c語言專業實習報告,C語言個人實習報告(范文1)

《C語言個人實習報告.doc》由會員分享&#xff0c;可免費在線閱讀全文&#xff0c;更多與《C語言個人實習報告》相關文檔資源請在幫幫文庫(www.woc88.com)數億文檔庫存里搜索。1、好的學習興趣&#xff0c;獨立的編程風格。(組C語言實訓報告課題名稱&#xff1a;通訊錄管理系統…

分析不同類型頁面渲染過程

現在讓我們看看瀏覽器從網絡上加載資源所耗費的時間&#xff08;我們忽略從緩存以及從CDN等中間商網絡上加載資源&#xff09;&#xff0c;我們首先要知道的是&#xff1a; 一個到無服務的網路往返 (傳播延遲) 大約100ms服務器對于HTML文檔的響應大約100ms&#xff0c;對于其他…

引入 javascript_在您JavaScript項目中引入類型安全性? 再想一想

引入 javascriptby James Wright詹姆斯賴特(James Wright) 在您JavaScript項目中引入類型安全性&#xff1f; 再想一想 (Introducing Type Safety To Your JavaScript Project? Think Again) 更新— 2017年2月1日 (Update — 1st February 2017) I’ve heard various counter…

劣幣驅逐良幣通俗解釋_如何通俗理解劣幣驅逐良幣的問題,同時如何扭轉這個現象?...

以牛奶為例談劣幣驅逐良幣。【原來】大家都賣的純正的純牛奶&#xff0c;因為。牛奶的來源和生產工藝基本上都差不多&#xff0c;所以說產品的品質也沒有什么大的差異。【后來】奶制品企業為了爭奪市場開始打價格戰&#xff0c;你賣5塊我就賣4塊&#xff0c;你賣4塊我就賣3塊5&…

c語言里 如何取得線程的lpparameter'參數,請問線程函數如何訪問對話框類中的變量...

我線程函數定義在對話框類的實現文件中需要訪問對話框類頭文件中聲明的變量怎么才可以&#xff1f;i_noname(晚九朝五) 于 2005-9-15 16:14:25DWORD WINAPI Proc(LPVOID lpParameter ){CDialog *pDlg (CDialog *)lpParameter;...}啟用線程時把對話框指針傳進去AfxBeginThread(…

Android內存優化——內存泄露檢測分析方法

上一篇文章總結了一些常見的內存泄露場景及優化方案&#xff0c;這篇文章繼續總結內存泄露的一些常用的檢測和分析方法。 Lint代碼檢查 AndroidStudio自動Lint代碼檢查工具&#xff0c;一些常見的代碼警告Lint工具都會給我們提示。使用也比較簡單&#xff1a; Analyze —> I…