---
title: C++第四週練習題目參考解答
---
# C++第四週練習題目參考解答
[b068: 蛇蛇矩陣](https://judge.tcirc.tw/ShowProblem?problemid=b068)
```cpp=
#include <iostream>
using namespace std;
int main()
{
int n;
while(cin >> n){
bool d=0;//0->,1<-
int num=1;
for(int row=0;row<n;row++){
if(d==0){
for(int col=0;col<n;col++){
cout << num << " ";
num++;
}
d=1;
}else{
for(int col=n-1;col>=0;col--){
cout << num+col << " ";
}
num+=n;
d=0;
}
cout << "\n";
}
}
}
```
[b030: 健康檢查(Ⅰ)](https://judge.tcirc.tw/ShowProblem?problemid=b030)
[b069: 字串串串串串接](https://judge.tcirc.tw/ShowProblem?problemid=b069)
```cpp=
#include<bits/stdc++.h>
using namespace std;
const int max_l=1e4;
int main(){
string ans,ss,s1,s2,s3,t;
int leng=0;
cin>>s1>>s2>>s3>>t;
for(int i=0;i<t.length();i+=1){
if(t[i]-'0'==1) ss=s1;
if(t[i]-'0'==2) ss=s2;
if(t[i]-'0'==3) ss=s3;
if(i==0) ans=ss;
if(i>0) ans+=ss;
}
cout<<ans<<'\n';
}
```
[b053: 正確的數字](https://judge.tcirc.tw/ShowProblem?problemid=b053)
[b071: 電梯 (Elevator)](https://judge.tcirc.tw/ShowProblem?problemid=b071)
```cpp=
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int now=1;
int n;
scanf("%d", &n);
int ans=0;
for(int i=0;i<n;i++){
int temp;
scanf("%d", &temp);
int d=temp-now;
now=temp;
if(d>0){
ans+=3*d;
}else{
ans-=2*d;
}
}
printf("%d", ans);
}
```
[b070: 回文數](https://judge.tcirc.tw/ShowProblem?problemid=b070)
```cpp=
#include <iostream>
#include <string>
using namespace std;
int main()
{
string num;
cin >> num;
bool flag=1;
for(int i=0;i<=num.size()/2;i++){
if(num[i]!=num[num.size()-1-i]){
cout << "NO";
flag=0;
}
}
if(flag==1){
cout << "YES";
}
}
```
[b075: 一元一次方程式](https://judge.tcirc.tw/ShowProblem?problemid=b075)
```cpp=
#include <iostream>
using namespace std;
int main()
{
string equation;
cin >> equation;
int leftx=0,leftsum=0,rightx=0,rightsum=0;
bool lr=0;
string temp="";
for(int i=0;i<equation.size();i++){
if(equation[i]=='='){
if(temp!=""){
if(lr==0){
leftsum+=stoi(temp);
}else{
rightsum+=stoi(temp);
}
temp="";
}
lr=1;
}else if(equation[i]=='x'){
if(temp!=""&&temp!="+"&&temp!="-"){
if(lr==0){
leftx+=stoi(temp);
}else{
rightx+=stoi(temp);
}
}else if(temp=="-"){
if(lr==0){
leftx--;
}else{
rightx--;
}
}else{
if(lr==0){
leftx++;
}else{
rightx++;
}
}
temp="";
}else if(equation[i]=='+'||equation[i]=='-'){
if(temp!=""){
if(lr==0){
leftsum+=stoi(temp);
}else{
rightsum+=stoi(temp);
}
}
temp="";
temp+=equation[i];
}else{
temp+=equation[i];
}
}
if(temp!=""){
if(lr==0){
leftsum+=stoi(temp);
}else{
rightsum+=stoi(temp);
}
}
int x,sum;
x=leftx-rightx;
sum=rightsum-leftsum;
if(x==0&&sum==0){
cout << "Infinite solutions";
}else if(x==0){
cout << "No solution";
}else{
int ans=sum/x;
string out="x=";
out+=to_string(ans);
cout << out;
}
}
```