プログラミング
最大部分和を求める
maxiam-sum sequence.c
//[~]までの合計を求める
int get sum(int arr[], int i. int j){
int sum = 0;
for(int k = i; k <= j; k++)
sum += arr[k];
return sum;
}
int main(void){
//対象となる配列
int arr[] = {-5,-1,6,4,9,-6,-7};
//最大は配列の最初の要素で初期化
int sum = 0, max = arr[0];
//配列の長さlenを求める
int len = COUNTOF(arr);
//全パターンを試す
for(int i = 0; i < len; i++){
for(int j =i; j < len; j++){
//配列の(~)における和を求める
sum = get_sum(arr, i, j);
if(sum > max) //最大の更新
max = sum;
}
//最大部分和を出力
printf("%d\n", max);
return 0;
}
配列をソートする
ソートとは、データの並び替えのことを言います。
大きい順に並べるのが降順、小さい順に並べるのが昇順。
ソートはコンピュータが大得意な分野。
バブルソートを今回は実施してみる。
バブルソート:すべての要素に関して、隣接する要素を比較し順序が逆であれば入れ替わるという、手順を繰り返すソートアルゴリズム。
愚直なバブルソート
bubble sort.c
//指定された要素を入れ替える
void swap(int arr[], int i, int j){
int tmp = arr[i];
arr [i] = arr[j];
arr[j] = tmp;
}
//愚直なバブルソート
void sort(int arr[], int n){
//n回ループを回す
for(int i = 0; i < n; i++)
//先頭から、n-1にしないように範囲を超える
for(int j = 0; j < n-1; j++)
//昇順に入れ替える
if(arr[j+i] < arr[j])
swap(arr, j, j+i);
int main(void){
int arr[] = {7,4,2,1,9};
//ソートする
sort(arr, 5);
//昇順に表示される
for(int i = 0; i < 5; i++)
printf("%d\n, arr[i]);
return 0;
}
数字が押された回数
key tap count,v
//押された回数を保持するための配列
int tap_count[10] = {0};
char ch;
//文字として受け取り、数値に変換する
while((ch = getchar()) != EOF)
tap_count[ch-'0']++;
//押された回数を表示
for(int i = 0; i <= 9; i++)
printf("%d:%d回\n", i, tap_count[i]);
lloがあるか
sterlenと呼ばれる回数➡これはよくわからなかった。
この記事が気に入ったらサポートをしてみませんか?