標題:
2024/06/07 課堂重點(宗儒)
[打印本頁]
作者:
鄭繼威
時間:
2024-6-7 17:37
標題:
2024/06/07 課堂重點(宗儒)
本帖最後由 鄭繼威 於 2024-6-7 17:43 編輯
2024/06/07 課程重點
上次
[抽考]
[APCS]
10510
https://docs.google.com/forms/d/ ... n6TyHu5YhQ/viewform
10610_02_交錯字串
10603_03_數字龍捲風
[作業]
練習
[KitaJudge]
501~510
實作並
通過AC
https://meet.google.com/rcd-crxn-qmz
作者:
鄭繼威
時間:
2024-6-7 19:08
數字龍捲風
#include <iostream>
using namespace std;
int main()
{
int N,d;
cin>>N>>d;//N是二維陣列d是起始方向
int a[N][N];//二維陣列
for(int i=0;i<N;i++)//輸入二維陣列的值
for(int j=0;j<N;j++)
cin>>a[i][j];
int dx[4]={-1,0,1,0};//向左,向上,向右,向下時,座標x值的改變
int dy[4]={0,-1,0,1};//向左,向上,向右,向下時,座標y值的改變
int x=N/2;//起始點x
int y=N/2;//起始點y
cout << a[y][x];//起始點的陣列索引
int countdown=N*N-1;//總共要移動幾步
int cnt=0;//換方向時計算用
int step=1;//先設定每走一步會換方向
while(true){
for(int i=0;i<step;i++){ //此迴圈控制每走幾步要換方向
y=y+dy[d]; //新座標的y值
x=x+dx[d]; //新座標的x值
cout<<a[y][x]; //輸出新座標的陣列值
countdown--; //總步數減1
if(countdown==0)
{
break; //若走完全程才離開迴圈
}
}
if(countdown==0)
{
break;
}
d++;//換下個方向
d=d%4;//限制d介於0~3範圍
cnt++;//換方向的次數
if(cnt%2==0){//若換方向的次數為偶數
step++;//每一方向就再多走一步
}
}
return 0;
}
複製代碼
作者:
鄭繼威
時間:
2024-6-7 19:08
#include<bits/stdc++.h>
using namespace std;
//Q21
int F(int x,int y)
{
if(x<1)
{
return 1;
}
else
{
return F(x-y,y)+F(x-2*y,y);
}
}
int main()
{
cout<<F(4,3);
return 0;
}
複製代碼
作者:
鄭繼威
時間:
2024-6-7 19:08
#include<bits/stdc++.h>
using namespace std;
//Q20
int g1 = 20, g2 = 10;
int f1(int v) {
int g1 = 5;
return g1+v;
}
int f2(int v) {
int c = g2;
v = v+c+g1;
g1 = 10;
c = 40;
return v;
}
int main() {
g2 = 0;
g2 = f1(g2);
printf("%d", f2(f2(g2)));
return 0;
}
複製代碼
作者:
鄭繼威
時間:
2024-6-7 19:09
#include<bits/stdc++.h>
using namespace std;
int n=0;
int F(int a)
{
//Q16
if ( _____?_____ )
return a * 2 + 3;
else
return a * 3 + 1;
}
int main()
{
cout<<F();
return 0;
}
複製代碼
作者:
李宗儒
時間:
2024-6-8 19:30
#include<bits/stdc++.h>
using namespace std;
int up,lef;
int o=1,n=1;
int t=0,tcount=1;
vector<int> v;
int main()
{
int a,c;
cin>>a>>c;
if(a%2==0)
{
cout<<"error";
return 0;
}
int b[a][a];
for(int i=0;i<a;i++)
for(int j=0;j<a;j++)
cin>>b[i][j];
int a1=a/2,a2=a/2;
int a1y=a/2,a2y=a/2;
if(c==0)
{
lef=-1;
up=-1;
}
else if(c==1)
{
lef=1;
up=-1;
}
else if(c==2)
{
lef=1;
up=1;
}
else if(c==3)
{
lef=-1;
up=1;
}
v.push_back(b[a1][a2]);
while(o!=0)
{
if(c%2==0)//移動
{
for(int i=0;i<tcount;i++)
{
a2+=lef;
if(a2<0)
{
a2=0;
v.push_back(b[a1][a2]);
o=0;
break;
}
else if(a2>=a)
{
a2=a-1;
v.push_back(b[a1][a2]);
o=0;
break;
}
else
{
v.push_back(b[a1][a2]);
}
}
}
else
{
for(int i=0;i<tcount;i++)
{
a1+=up;
if(a1<0)
{
a1=0;
v.push_back(b[a1][a2]);
o=0;
break;
}
else if(a1>=a)
{
a1=a-1;
v.push_back(b[a1][a2]);
o=0;
break;
}
else
{
v.push_back(b[a1][a2]);
}
}
}
///////////////////////////////////////////////////////////////判斷
if(o==0)
{
break;
}
//////////////////////////////////////////////////////////移動
if(c%2==0)//移動
{
for(int i=0;i<tcount;i++)
{
a1+=up;
if(a1<0)
{
a1=0;
v.push_back(b[a1][a2]);
o=0;
break;
}
else if(a1>=a)
{
a1=a-1;
v.push_back(b[a1][a2]);
o=0;
break;
}
else
{
v.push_back(b[a1][a2]);
}
}
}
else
{
for(int i=0;i<tcount;i++)
{
a2+=lef;
if(a2<0)
{
a2=0;
v.push_back(b[a1][a2]);
o=0;
break;
}
else if(a2>=a)
{
a2=a-1;
v.push_back(b[a1][a2]);
o=0;
break;
}
else
{
v.push_back(b[a1][a2]);
}
}
}
//////////////////////////////////////////////////////////判斷
// if(a1<0)
// {
// a1=0;
// v.push_back(b[a1][a2]);
// o=0;
// continue;
// }
// else if(a1>=a)
// {
// a1=a-1;
// v.push_back(b[a1][a2]);
// o=0;
// continue;
// }
// else if(a2<0)
// {
// a2=0;
// v.push_back(b[a1][a2]);
// o=0;
// continue;
// }
// else if(a2>=a)
// {
// a2=a-1;
// v.push_back(b[a1][a2]);
// o=0;
// continue;
// }
// v.push_back(b[a1][a2]);
///////////////////////////////////////////////////////////////改變
tcount++;
lef*=-1;
up*=-1;
}
for(int i=0;i<v.size()-1;i++)
{
cout<<v[i];
}
cout<<endl;
return 0;
}
複製代碼
作者:
鄭繼威
時間:
2024-6-12 15:09
本帖最後由 鄭繼威 於 2024-6-12 18:11 編輯
交錯字串
#include<iostream>
using namespace std;
int main(){
int k,w=0,c=0,mxc=0;//k交錯字串,同類寬度,交錯子字串長度,交錯最長子字串
string s;
cin >> k >> s;
for (int i=0; i<s.size(); i++){ //遍歷s字串每個字元
if((i!=0)&&((isupper(s[i]) && islower(s[i-1])) || ( islower(s[i]) && isupper(s[i-1])) ) )
{
//若i不是0(i-1才不會變-1),而且大小寫改變,就要結算相同字體的寬度
if(w<k)//寬度不足
c=0;//字串長度歸零重算
w=0; //寬度歸零重算else
}
w++;//大小寫未改,就累加寬度
if(w==k)//若寬度=k
c+=k;//字串長度+k
else if(w>k)//寬度太大
c=k;//取右邊k個字元`
mxc=c>mxc?c:mxc;//更新mxc
}
cout<< mxc <<endl;
return 0;
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2