#14849: 來自台灣的小福利


Aaaaaaaaaaaaa (羅傑)

學校 : 臺北市立大同高級中學
編號 : 69102
來源 : [111.235.208.242]
最後登入時間 :
2023-09-13 09:02:41
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [203.72.178.252] | 發表日期 : 2018-08-09 14:16

#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;
}
}

 

 

我是第一個~~~

 
#18537: Re:來自台灣的小福利


luv_u (luv_u)

學校 : 不指定學校
編號 : 99805
來源 : [27.52.197.36]
最後登入時間 :
2019-12-17 21:59:25
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [27.247.6.203] | 發表日期 : 2019-07-20 12:22

#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++;這個也是為甚麼逗號不是分號呢?

 
#18538: Re:來自台灣的小福利


ufve0704 (爬 我爬 我爬爬爬 有排行榜這種東西就是要爬 爬過我上面的那...)

學校 : 臺北市私立延平高級中學
編號 : 83268
來源 : [203.72.178.1]
最後登入時間 :
2023-10-30 13:02:50
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [114.42.215.73] | 發表日期 : 2019-07-20 12:34

#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

 
#18564: Re:來自台灣的小福利


luv_u (luv_u)

學校 : 不指定學校
編號 : 99805
來源 : [27.52.197.36]
最後登入時間 :
2019-12-17 21:59:25
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [39.9.13.232] | 發表日期 : 2019-07-21 21:16

#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,是為甚麼呢?


 
#18566: Re:來自台灣的小福利


ufve0704 (爬 我爬 我爬爬爬 有排行榜這種東西就是要爬 爬過我上面的那...)

學校 : 臺北市私立延平高級中學
編號 : 83268
來源 : [203.72.178.1]
最後登入時間 :
2023-10-30 13:02:50
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [203.72.178.252] | 發表日期 : 2019-07-22 12:38

#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)

 
#18571: Re:來自台灣的小福利


luv_u (luv_u)

學校 : 不指定學校
編號 : 99805
來源 : [27.52.197.36]
最後登入時間 :
2019-12-17 21:59:25
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [27.242.32.144] | 發表日期 : 2019-07-22 20:47

#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)

可是這樣子改還是一樣沒辦法過,是出了甚麼問題呢?


 
#18572: Re:來自台灣的小福利


ufve0704 (爬 我爬 我爬爬爬 有排行榜這種東西就是要爬 爬過我上面的那...)

學校 : 臺北市私立延平高級中學
編號 : 83268
來源 : [203.72.178.1]
最後登入時間 :
2023-10-30 13:02:50
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [114.42.215.73] | 發表日期 : 2019-07-22 20:50

#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裡面不能這樣亂玩分號....


 
#18573: Re:來自台灣的小福利


luv_u (luv_u)

學校 : 不指定學校
編號 : 99805
來源 : [27.52.197.36]
最後登入時間 :
2019-12-17 21:59:25
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [27.242.32.144] | 發表日期 : 2019-07-22 20:55

#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裡面不能這樣亂玩分號....


噢噢好的了解,所以它用逗號是表示條件還是其他甚麼嗎?


 
#18574: Re:來自台灣的小福利


mirkat.ee06@g2.nctu.edu.tw (炭烤海苔)

學校 : 不指定學校
編號 : 74539
來源 : [138.246.3.200]
最後登入時間 :
2024-08-14 18:08:26
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [218.187.81.120] | 發表日期 : 2019-07-23 09:06

 
(恕刪

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

我不推薦這樣寫  因為這樣寫不會有甚麼特殊意涵在裡面

乖乖寫 ; 就好

 

 
#18575: Re:來自台灣的小福利


rexwu1104@gmail.com (黑雪公主 Black Lotus)

學校 : 新北市私立南山高級中學
編號 : 93041
來源 : [49.216.131.103]
最後登入時間 :
2024-06-06 19:28:43
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [36.225.28.212] | 發表日期 : 2019-07-23 09:16

 
(恕刪

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

我不推薦這樣寫  因為這樣寫不會有甚麼特殊意涵在裡面

乖乖寫 ; 就好

 

不好意思,大大,你打了三個分號

 
#18576: Re:來自台灣的小福利


rexwu1104@gmail.com (黑雪公主 Black Lotus)

學校 : 新北市私立南山高級中學
編號 : 93041
來源 : [49.216.131.103]
最後登入時間 :
2024-06-06 19:28:43
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [36.225.28.212] | 發表日期 : 2019-07-23 09:21

#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++;
}

還可改成這樣

 
#18577: Re:來自台灣的小福利


mirkat.ee06@g2.nctu.edu.tw (炭烤海苔)

學校 : 不指定學校
編號 : 74539
來源 : [138.246.3.200]
最後登入時間 :
2024-08-14 18:08:26
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [218.187.81.120] | 發表日期 : 2019-07-23 09:31

不好意思,大大,你打了三個分號


阿抱歉
請忽略第三個分號QQ

 
#18579: Re:來自台灣的小福利


rexwu1104@gmail.com (黑雪公主 Black Lotus)

學校 : 新北市私立南山高級中學
編號 : 93041
來源 : [49.216.131.103]
最後登入時間 :
2024-06-06 19:28:43
b159. NOIP2007 2.纪念品分组 -- NOIP2007普及組 | From: [36.225.28.212] | 發表日期 : 2019-07-23 12:30

#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++;

更短

 
ZeroJudge Forum