プログラミング

最大部分和を求める

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と呼ばれる回数➡これはよくわからなかった。


この記事が気に入ったらサポートをしてみませんか?