#include<bits/stdc++.h>
using namespace std;
int main(){
int w,n;
while(cin>>w>>n){
int a[n];
for(int i=0; i<=n; i++) cin>>a[i];
sort( a,a+n);
int sum=n;
for(int j=0, k=n-1; k>j;){
if(a[j]+a[k]<=w) sum--, k--,j++;
else k--;
}
cout<<sum<<endl;
}
}
#include<bits/stdc++.h>
using namespace std;
int main(){
int w,n;
while(cin>>w>>n){
int a[n];
for(int i=0; i<=n; i++) cin>>a[i];
sort( a,a+n);
int sum=n;
for(int j=0, k=n-1; k>j;){
if(a[j]+a[k]<=w) sum--, k--,j++;
else k--;
}
cout<<sum<<endl;
}
}
請問為甚麼for(int j=0, k=n-1; k>j;)的j=0和k=n-1中間是逗號?
還有sum--, k--,j++;這個也是為甚麼逗號不是分號呢?
#include<bits/stdc++.h>
using namespace std;
int main(){
int w,n;
while(cin>>w>>n){
int a[n];
for(int i=0; i<=n; i++) cin>>a[i];
sort( a,a+n);
int sum=n;
for(int j=0, k=n-1; k>j;){
if(a[j]+a[k]<=w) sum--, k--,j++;
else k--;
}
cout<<sum<<endl;
}
}
請問為甚麼for(int j=0, k=n-1; k>j;)的j=0和k=n-1中間是逗號?
還有sum--, k--,j++;這個也是為甚麼逗號不是分號呢?
我對於分號的理解是簡潔程式碼
讓他變得更可讀(就是好讀....此人剛剛詞窮....
比如for(int j=0, k=n-1; k>j;)也可寫成for(int j=0;k=n-1;k>j)
但有的人習慣上寫後者
這就要看當事人的習慣了....吧?
像這段:
if(a[j]+a[k]<=w) sum--, k--,j++;
其實也可寫成:
if(a[j]+a[k]<=w){sum--;k--;j++;}
而我就是有時候會合在一起,有時候不會的人....(所以我的程式碼讀起來會很痛苦....
分號其實就是將一段以上的程式碼合起來
變成一段的程式碼
如果有講錯請糾正OuO
#include<bits/stdc++.h>
using namespace std;
int main(){
int w,n;
while(cin>>w>>n){
int a[n];
for(int i=0; i<=n; i++) cin>>a[i];
sort( a,a+n);
int sum=n;
for(int j=0, k=n-1; k>j;){
if(a[j]+a[k]<=w) sum--, k--,j++;
else k--;
}
cout<<sum<<endl;
}
}
請問為甚麼for(int j=0, k=n-1; k>j;)的j=0和k=n-1中間是逗號?
還有sum--, k--,j++;這個也是為甚麼逗號不是分號呢?
我對於分號的理解是簡潔程式碼
讓他變得更可讀(就是好讀....此人剛剛詞窮....
比如for(int j=0, k=n-1; k>j;)也可寫成for(int j=0;k=n-1;k>j)
但有的人習慣上寫後者
這就要看當事人的習慣了....吧?
像這段:
if(a[j]+a[k]<=w) sum--, k--,j++;
其實也可寫成:
if(a[j]+a[k]<=w){sum--;k--;j++;}
而我就是有時候會合在一起,有時候不會的人....(所以我的程式碼讀起來會很痛苦....
分號其實就是將一段以上的程式碼合起來
變成一段的程式碼
如果有講錯請糾正OuO
但是我按照你說的,把for(int j=0, k=n-1; k>j;)和if(a[j]+a[k]<=w) sum--, k--,j++;改成了for(int j=0;k=n-1;k>j)和if(a[j]+a[k]<=w){sum--;k--;j++;}試試看,結果是CE,一定要變回原來的才AC,是為甚麼呢?
#include<bits/stdc++.h>
using namespace std;
int main(){
int w,n;
while(cin>>w>>n){
int a[n];
for(int i=0; i<=n; i++) cin>>a[i];
sort( a,a+n);
int sum=n;
for(int j=0, k=n-1; k>j;){
if(a[j]+a[k]<=w) sum--, k--,j++;
else k--;
}
cout<<sum<<endl;
}
}
請問為甚麼for(int j=0, k=n-1; k>j;)的j=0和k=n-1中間是逗號?
還有sum--, k--,j++;這個也是為甚麼逗號不是分號呢?
我對於分號的理解是簡潔程式碼
讓他變得更可讀(就是好讀....此人剛剛詞窮....
比如for(int j=0, k=n-1; k>j;)也可寫成for(int j=0;k=n-1;k>j)
但有的人習慣上寫後者
這就要看當事人的習慣了....吧?
像這段:
if(a[j]+a[k]<=w) sum--, k--,j++;
其實也可寫成:
if(a[j]+a[k]<=w){sum--;k--;j++;}
而我就是有時候會合在一起,有時候不會的人....(所以我的程式碼讀起來會很痛苦....
分號其實就是將一段以上的程式碼合起來
變成一段的程式碼
如果有講錯請糾正OuO
但是我按照你說的,把for(int j=0, k=n-1; k>j;)和if(a[j]+a[k]<=w) sum--, k--,j++;改成了for(int j=0;k=n-1;k>j)和if(a[j]+a[k]<=w){sum--;k--;j++;}試試看,結果是CE,一定要變回原來的才AC,是為甚麼呢?
那個我看錯了
for的分號是連著int的
所以應該是:for(int j=0;int k=n-1;k>j)
#include<bits/stdc++.h>
using namespace std;
int main(){
int w,n;
while(cin>>w>>n){
int a[n];
for(int i=0; i<=n; i++) cin>>a[i];
sort( a,a+n);
int sum=n;
for(int j=0, k=n-1; k>j;){
if(a[j]+a[k]<=w) sum--, k--,j++;
else k--;
}
cout<<sum<<endl;
}
}
請問為甚麼for(int j=0, k=n-1; k>j;)的j=0和k=n-1中間是逗號?
還有sum--, k--,j++;這個也是為甚麼逗號不是分號呢?
我對於分號的理解是簡潔程式碼
讓他變得更可讀(就是好讀....此人剛剛詞窮....
比如for(int j=0, k=n-1; k>j;)也可寫成for(int j=0;k=n-1;k>j)
但有的人習慣上寫後者
這就要看當事人的習慣了....吧?
像這段:
if(a[j]+a[k]<=w) sum--, k--,j++;
其實也可寫成:
if(a[j]+a[k]<=w){sum--;k--;j++;}
而我就是有時候會合在一起,有時候不會的人....(所以我的程式碼讀起來會很痛苦....
分號其實就是將一段以上的程式碼合起來
變成一段的程式碼
如果有講錯請糾正OuO
但是我按照你說的,把for(int j=0, k=n-1; k>j;)和if(a[j]+a[k]<=w) sum--, k--,j++;改成了for(int j=0;k=n-1;k>j)和if(a[j]+a[k]<=w){sum--;k--;j++;}試試看,結果是CE,一定要變回原來的才AC,是為甚麼呢?
那個我看錯了
for的分號是連著int的
所以應該是:for(int j=0;int k=n-1;k>j)
可是這樣子改還是一樣沒辦法過,是出了甚麼問題呢?
#include<bits/stdc++.h>
using namespace std;
int main(){
int w,n;
while(cin>>w>>n){
int a[n];
for(int i=0; i<=n; i++) cin>>a[i];
sort( a,a+n);
int sum=n;
for(int j=0, k=n-1; k>j;){
if(a[j]+a[k]<=w) sum--, k--,j++;
else k--;
}
cout<<sum<<endl;
}
}
請問為甚麼for(int j=0, k=n-1; k>j;)的j=0和k=n-1中間是逗號?
還有sum--, k--,j++;這個也是為甚麼逗號不是分號呢?
我對於分號的理解是簡潔程式碼
讓他變得更可讀(就是好讀....此人剛剛詞窮....
比如for(int j=0, k=n-1; k>j;)也可寫成for(int j=0;k=n-1;k>j)
但有的人習慣上寫後者
這就要看當事人的習慣了....吧?
像這段:
if(a[j]+a[k]<=w) sum--, k--,j++;
其實也可寫成:
if(a[j]+a[k]<=w){sum--;k--;j++;}
而我就是有時候會合在一起,有時候不會的人....(所以我的程式碼讀起來會很痛苦....
分號其實就是將一段以上的程式碼合起來
變成一段的程式碼
如果有講錯請糾正OuO
但是我按照你說的,把for(int j=0, k=n-1; k>j;)和if(a[j]+a[k]<=w) sum--, k--,j++;改成了for(int j=0;k=n-1;k>j)和if(a[j]+a[k]<=w){sum--;k--;j++;}試試看,結果是CE,一定要變回原來的才AC,是為甚麼呢?
那個我看錯了
for的分號是連著int的
所以應該是:for(int j=0;int k=n-1;k>j)
可是這樣子改還是一樣沒辦法過,是出了甚麼問題呢?
我發現for裡面不能這樣亂玩分號....
#include<bits/stdc++.h>
using namespace std;
int main(){
int w,n;
while(cin>>w>>n){
int a[n];
for(int i=0; i<=n; i++) cin>>a[i];
sort( a,a+n);
int sum=n;
for(int j=0, k=n-1; k>j;){
if(a[j]+a[k]<=w) sum--, k--,j++;
else k--;
}
cout<<sum<<endl;
}
}
請問為甚麼for(int j=0, k=n-1; k>j;)的j=0和k=n-1中間是逗號?
還有sum--, k--,j++;這個也是為甚麼逗號不是分號呢?
我對於分號的理解是簡潔程式碼
讓他變得更可讀(就是好讀....此人剛剛詞窮....
比如for(int j=0, k=n-1; k>j;)也可寫成for(int j=0;k=n-1;k>j)
但有的人習慣上寫後者
這就要看當事人的習慣了....吧?
像這段:
if(a[j]+a[k]<=w) sum--, k--,j++;
其實也可寫成:
if(a[j]+a[k]<=w){sum--;k--;j++;}
而我就是有時候會合在一起,有時候不會的人....(所以我的程式碼讀起來會很痛苦....
分號其實就是將一段以上的程式碼合起來
變成一段的程式碼
如果有講錯請糾正OuO
但是我按照你說的,把for(int j=0, k=n-1; k>j;)和if(a[j]+a[k]<=w) sum--, k--,j++;改成了for(int j=0;k=n-1;k>j)和if(a[j]+a[k]<=w){sum--;k--;j++;}試試看,結果是CE,一定要變回原來的才AC,是為甚麼呢?
那個我看錯了
for的分號是連著int的
所以應該是:for(int j=0;int k=n-1;k>j)
可是這樣子改還是一樣沒辦法過,是出了甚麼問題呢?
我發現for裡面不能這樣亂玩分號....
噢噢好的了解,所以它用逗號是表示條件還是其他甚麼嗎?
u大別亂教了==
雖然你很好心~
請問為甚麼for(int j=0, k=n-1; k>j;)的j=0和k=n-1中間是逗號?
回到for迴圈的最初定義
for ( 起始值 ; 條件式 ; 更新值)
注意,compiler怎麼分辨for( your code )中的your code哪些是起始值、條件式、還是更新值呢?
答案就是靠 ; 來判斷
初學者最初學到的for迴圈應該都長這樣
for( int i=0 ; i<10 ; i++ )
int i=0 --> 起始值
i<10 --> 條件式
i++ --> 更新值
但其實不一定是要寫起始值、條件式、更新值的
你也可以這樣寫
int i=0 ;
for( ; ; ; )
{
if( i>=10 ) break ;
else i++ ;
}
這段code的效力跟上面那段相同
但你會發現這樣寫第一閱讀困難,第二超醜的
另外還有一個熟悉的例子
for( ; ; ; )
這是一個無窮迴圈,因為沒有條件式,所以系統會永遠卡在for裡面
回到for(int j=0, k=n-1; k>j;)
這段code的意思
int i=0, k=n-1 --> 起始值
k>j --> 條件式
沒有更新值
當然你也可以把 k=n-1 寫道{}裡面
但這樣寫比較簡潔、邏輯上易懂
還有sum--, k--,j++;這個也是為甚麼逗號不是分號呢?
這邊我也不懂為甚麼編譯器可以過XD
我不推薦這樣寫 因為這樣寫不會有甚麼特殊意涵在裡面
乖乖寫 ; 就好
u大別亂教了==
雖然你很好心~
請問為甚麼for(int j=0, k=n-1; k>j;)的j=0和k=n-1中間是逗號?
回到for迴圈的最初定義
for ( 起始值 ; 條件式 ; 更新值)
注意,compiler怎麼分辨for( your code )中的your code哪些是起始值、條件式、還是更新值呢?
答案就是靠 ; 來判斷
初學者最初學到的for迴圈應該都長這樣
for( int i=0 ; i
int i=0 --> 起始值
i 條件式
i++ --> 更新值
但其實不一定是要寫起始值、條件式、更新值的
你也可以這樣寫
int i=0 ;
for( ; ; ; )
{
if( i>=10 ) break ;
else i++ ;
}
這段code的效力跟上面那段相同
但你會發現這樣寫第一閱讀困難,第二超醜的
另外還有一個熟悉的例子
for( ; ; ; )
這是一個無窮迴圈,因為沒有條件式,所以系統會永遠卡在for裡面
回到for(int j=0, k=n-1; k>j;)
這段code的意思
int i=0, k=n-1 --> 起始值
k>j --> 條件式
沒有更新值
當然你也可以把 k=n-1 寫道{}裡面
但這樣寫比較簡潔、邏輯上易懂
還有sum--, k--,j++;這個也是為甚麼逗號不是分號呢?
這邊我也不懂為甚麼編譯器可以過XD
我不推薦這樣寫 因為這樣寫不會有甚麼特殊意涵在裡面
乖乖寫 ; 就好
不好意思,大大,你打了三個分號
#include<bits/stdc++.h>
using namespace std;
int main(){
int w,n;
while(cin>>w>>n){
int a[n];
for(int i=0; i<=n; i++) cin>>a[i];
sort( a,a+n);
int sum=n;
for(int j=0, k=n-1; k>j;){
if(a[j]+a[k]<=w) sum--, k--,j++;
else k--;
}
cout<<sum<<endl;
}
}
請問為甚麼for(int j=0, k=n-1; k>j;)的j=0和k=n-1中間是逗號?
還有sum--, k--,j++;這個也是為甚麼逗號不是分號呢?
第一:是他設定了兩個初始值,一個判斷,更新應該會在迴圈裡更新
第二:只是把三個指令連在一起
for(int j=0, k=n-1; k>j;k--){
if(a[j]+a[k]<=w) sum--,j++;
}
還可改成這樣
不好意思,大大,你打了三個分號
阿抱歉
請忽略第三個分號QQ
#include<bits/stdc++.h>
using namespace std;
int main(){
int w,n;
while(cin>>w>>n){
int a[n];
for(int i=0; i<=n; i++) cin>>a[i];
sort( a,a+n);
int sum=n;
for(int j=0, k=n-1; k>j;){
if(a[j]+a[k]<=w) sum--, k--,j++;
else k--;
}
cout<<sum<<endl;
}
}
請問為甚麼for(int j=0, k=n-1; k>j;)的j=0和k=n-1中間是逗號?
還有sum--, k--,j++;這個也是為甚麼逗號不是分號呢?
第一:是他設定了兩個初始值,一個判斷,更新應該會在迴圈裡更新
第二:只是把三個指令連在一起
for(int j=0, k=n-1; k>j;k--){
if(a[j]+a[k]<=w) sum--,j++;
}
還可改成這樣
for(int j=0, k=n-1; k>j;k--) if(a[j]+a[k]<=w) sum--,j++;
更短