毎日の質問(93)
オバマとのプログラミング
タイトル説明
米国のバラク・オバマ大統領は、プログラミングを学ぶようにすべての人に呼びかけただけでなく、コードを書くための模範を示し、アメリカ史上初のコンピューターコードを書いた大統領になりました。2014年の終わりに、「コンピューターサイエンス教育ウィーク」の正式な開始を祝うために、オバマ氏は非常に単純なコンピューターコードを作成しました。画面に正方形を描きます。今、あなたも彼と一緒にペイントすることができます!
入力フォーマット
入力は、正方形の辺の長さN(3≤N≤20)と、スペースで区切られた1行で正方形の辺を形成するいくつかの文字Cを示します。
出力フォーマット
指定された文字Cによって描かれた正方形を出力します。ただし、行の間隔は列の間隔よりも大きいため、結果をより正方形に見せるために、出力する行の数は実際には列の数の50%(切り上げ)であることに注意してください。
入力サンプル
10 a
サンプル出力
aaaaaaaaaa
a a
a a
a a
aaaaaaaaaa
C ++コード:
#include<iostream>
using namespace std;
int main()
{
float n;
char c;
cin >> n >> c;
int row;
row = (int)((n / 2.0) + 0.5);
for(int i = 0; i < row; i++)
{
for(int j = 0; j < n; j++)
{
if(i > 0 && i < row - 1 && j > 0 && j < n - 1 )
{
cout << ' ';
}
else
{
cout << c;
}
}
cout << '\n';
}
return 0;
}
サンプル操作の結果は次のとおりです。
私は人気があります、ハハハハハ
方法2:パリティ方法
#include<cstdio>
int main()
{
int row, col;
char c;
scanf("%d %c", &col, &c);
if(col % 2 == 1)
row = col / 2 + 1;
else
row = col / 2;
for(int i = 0; i < col; i++)
{
printf("%c", c);
}
printf("\n");
for(int i = 2; i < row; i++)
{
printf("%c", c);
for(int j = 0; j < col - 2; j++)
{
printf(" ");
}
printf("%c\n", c);
}
for(int i = 0; i < col; i++)
{
printf("%c", c);
}
return 0;
}
質問C:クイックソートqsort [2 *]
タイトル説明
n個の整数を入力し、クイックソートメソッドを使用してソートします
入る
最初の行の数字nは、
次のn行にn個の整数があることを意味し、各行には整数があります
出力
出力ソートの結果は昇順で、
行ごとに1つのデータが表示されます
入力サンプル
5
12
18
14
13
16
サンプル出力
12
13
14
16
18
C ++コード(最初のバージョン):
#pragma warning(disable:4996);
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int Partition(int a[], int left, int right)
{
int temp = a[left];
while (left < right) {
while (left<right && a[right]>temp) right--;
a[left] = a[right];
while (left<right && a[left]<=temp) left++;
a[right] = a[left];
}
a[left] = temp;
return left;
}
void QuickSort(int a[], int left, int right)
{
if(left < right)
{
int pos = Partition(a, left, right);
QuickSort(a, left, pos - 1);
QuickSort(a, pos + 1, right);
}
}
int main()
{
int n;
while(cin >> n)
{
for(int i = 1; i <= n; i++)
{
cin >> a[i];
}
QuickSort(a, 1, n);
for(int i = 1; i <= n; i++)
{
cout << a[i] << endl;
}
}
return 0;
}
C ++コード(2番目のバージョン):
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int Partition(int a[], int left, int right)
{
int p = (round(1.0 * rand() / RAND_MAX * (right - left) + left));
int t = a[p];
a[p] = a[left];
a[left] = t;
int temp = a[left];
while(left < right)
{
while(left < right && a[right] > temp)
{
right--;
}
a[left] = a[right];
while(left < right && a[left] < temp)
{
left++;
}
a[right] = a[left];
}
a[left] = temp;
return left;
}
void QuickSort(int a[], int left, int right)
{
if(left < right)
{
int pos = Partition(a, left, right);
QuickSort(a, left, pos - 1);
QuickSort(a, pos + 1, right);
}
}
int main()
{
int n;
while(cin >> n)
{
for(int i = 1; i <= n; i++)
{
cin >> a[i];
}
QuickSort(a, 1, n);
for(int i = 1; i <= n; i++)
{
cout << a[i] << endl;
}
}
return 0;
}
Cコード:
#pragma warning(disable:4996);
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<time.h>
#include<stdlib.h>
using namespace std;
int a[100005];
int partition(int a[], int left, int right) {
int temp = a[left];
while (left < right) {
while (left<right && a[right]>temp) right--;
a[left] = a[right];
while (left<right && a[left]<=temp) left++;
a[right] = a[left];
}
a[left] = temp;
return left;
}
void quicksort(int a[], int left, int right) {
if (left < right) {
int pos = partition(a, left, right);
quicksort(a, left, pos - 1);
quicksort(a, pos + 1, right);
}
}
int main() {
int n;
while (scanf("%d", &n) != EOF) {
for (int i = 0;i < n;i++)
{
scanf("%d", &a[i]);
}
quicksort(a, 0, n - 1);
for (int i = 0;i < n;i++) {
printf("%d\n", a[i]);
}
}
return 0;
}