こんにちは
今、Maximum Sum arrayの問題を解いているのですが、
関数の返し方と、自分が指定した数に一番近いMaximum Sumを実装しようとしているところで詰まってします。
関数を返そうしたところで出力に問題が出てしまうのですが、自分じゃ見つけられなくて質問させていただきました。
指摘していただけたらと思います。
C
1#include <stdio.h> 2 3int sum_Function(int* nums, int i, int j){ 4 5int sum=0; 6 7for(i;i<j; i++){ 8 9 sum+=nums[i]; 10 11} 12 13return sum; 14} 15 16int maxSubArray(int* nums, int numsSize){ 17 18int max=0; 19int i=0; 20int j=numsSize; 21int temp=0; 22 23for(i=0; i<numsSize; i++){ 24 25 for(j=numsSize; j>i; j--){ 26 27 temp = sum_Function(nums,i,j); 28 29 if(max<temp){ 30 31 max=temp; 32 } 33 34 } 35 36} 37return max; 38} 39 40int main(){ 41 42 int n; 43 scanf("%d",&n); 44 int nums[n]; 45 for(int i=0;i<n;++i){ 46 scanf("%d",&nums[i]); 47 } 48 49 n = sizeof(nums) / sizeof(int); 50 51 int max = maxSubArray(nums,n); 52 printf("%d",max); 53 return 0; 54} 55コード
Ex:入力したい値
10 55 //10個の数を入力して(最大要素数は20個)、55に一番近い合計を返す。(55は超えたらいけない
2 9 6 7 8 3 4 5 10 2//大きさ10の配列の要素で全て正の数、負の数はなし
出力したい値
54
まだ、自分で合計の数字に一番近くする入力するコードを実装していないものです。
私が書いたコードは、配列の大きさを入力した後、その大きさ分の要素を入力したものです。
配列の大きさ分の要素を入力するところまではあっているはずです。
ただ、求めたい配列の要素の合計に一番近い値を出入力するところが思いつきません