日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

信息学奥赛一本通 1028:字符菱形 | OpenJudge NOI 1.1 09

發布時間:2025/3/17 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信息学奥赛一本通 1028:字符菱形 | OpenJudge NOI 1.1 09 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題目鏈接】

ybt 1028:字符菱形
OpenJudge NOI 1.1 09:字符菱形

【題目考點】

1. 輸入輸出字符

2. (擴展)循環

【解體思路】(擴展)

問題:輸出對角線長度為n的菱形圖案(n>=3且n為奇數)
思路:
該菱形共有n行,假設這n行編號為0 ~ n-1
將這n行分為三部分:前半段,中間元素,后半段
由于n是奇數,將/視為整除運算的話,有(n-1)/2 等于 n/2
前半段共有n/2個元素,編號為0 ~ n/2-1
中間元素的編號為:n/2
后半段共有n/2個元素,編號為 n/2+1 ~ n-1
觀察規律可知,第i行前面空格數,為該行行號與中間行行號的差值的絕對值,即|i - n/2|
第i行的字符個數,為最大長度n減去前面空格數的2倍,即n - 2 * |i - n/2|

【題解代碼】

解法1:使用cin,cout進行輸入輸出

#include <bits/stdc++.h> using namespace std; int main() {char a;cin>>a;cout<<" "<<a<<endl;cout<<" "<<a<<a<<a<<endl;cout<<a<<a<<a<<a<<a<<endl;cout<<" "<<a<<a<<a<<endl;cout<<" "<<a<<endl;return 0; }

解法2:使用scanf,printf進行輸入輸出

#include <bits/stdc++.h> using namespace std; int main() {char a;scanf("%c", &a);printf(" %c\n", a);printf(" %c%c%c\n", a, a, a);printf("%c%c%c%c%c\n", a, a, a, a, a);printf(" %c%c%c\n", a, a, a);printf(" %c\n", a);return 0; }

解法3:(擴展)輸出對角線長度為n的菱形圖案(n>=3且n為奇數)

#include <bits/stdc++.h> using namespace std; int main() {char c;cin>>c;int n = 5;//菱形對角線長度。若要輸出任意對角線長度的菱形,則輸入該變量。 for(int i = 0; i < n; ++i)//一共有n行{int sn = abs(i - n / 2);//該行前面空格數int en = n - 2 * sn;//該行字符個數 for(int j = 0; j < sn; ++j)cout<<' ';for(int j = 0; j < en; ++j)cout<<c;cout<<endl; }return 0; }

總結

以上是生活随笔為你收集整理的信息学奥赛一本通 1028:字符菱形 | OpenJudge NOI 1.1 09的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。