質問編集履歴
2
初心者マークのつけ方がわかったので付けました。
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
1
少し内容をいじったのですが、いじる前のプログラムを誤って添付していました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -56,18 +56,20 @@
|
|
56
56
|
#include<string.h>
|
57
57
|
|
58
58
|
int young(char *str,int x,int min,int k){
|
59
|
-
|
59
|
+
/*x+1番目の文字とmin+1番目の文字を比較 若い方の位置を返す kは最初の文字からどれだけ離れたかの記憶*/
|
60
60
|
if(str[x]>str[min]){ /*minの方が若い*/
|
61
61
|
printf("return min-k(%d)\n",min-k);
|
62
62
|
return min-k; /*離れた分戻すためにkを引く*/
|
63
63
|
}
|
64
64
|
if(str[x]==str[min]){
|
65
65
|
if(str[min+1]<'A' || (str[min+1]>'Z' && str[min+1]<'a') || str[min+1]>'z'){
|
66
|
-
|
66
|
+
/*minの方が単語が短いからreturn min-k*/
|
67
|
+
printf("return min-k(%d)\n",min-k);
|
67
|
-
|
68
|
+
return min-k;
|
68
69
|
}
|
69
70
|
else if(str[x+1]<'A' || (str[x+1]>'Z' && str[x+1]<'a') || str[x+1]>'z'){
|
70
71
|
/*xの方が単語が短いからreturn x-k*/
|
72
|
+
printf("return x-k(%d)\n",x-k);
|
71
73
|
return x-k;
|
72
74
|
}
|
73
75
|
k++; /*次の文字へ行くから離れた分記憶*/
|
@@ -86,13 +88,12 @@
|
|
86
88
|
|
87
89
|
for(i=0;i<count;i++){
|
88
90
|
if(str[x[i]]<'A' || (str[x[i]]>'Z' && str[x[i]]<'a') || str[x[i]]>'z') continue;
|
89
|
-
printf("min=%d\n",min);
|
91
|
+
printf("%d回目 youngに入れる前 min=%d\n",i+1,min);
|
90
92
|
min=young(str,x[i],min,0); /*x[i]+1文字目からの単語とそれまでで一番若い単語の比較*/
|
91
|
-
printf("min=%d\n",i,min);
|
93
|
+
printf("%d回目 youngに入れた後 min=%d\n\n",i+1,min);
|
92
94
|
}
|
93
95
|
|
94
96
|
|
95
|
-
|
96
97
|
```
|
97
98
|
|
98
99
|
### 試したこと
|