演算法入門 習題3-5 謎題
#include <stdio.h> #include<iostream> #include<cmath> #include <string.h> using namespace std; #define maxn 6 char s[maxn][maxn]={"TRGSJ","XDOKI","M VLN","WPABE","UQHCF"}; char input[85]; int arrtop=2; // 行 int arrleft=1; // 列 int A(){ //上 if(arrtop>0){ s[arrtop][arrleft]=s[arrtop-1][arrleft]; arrtop-=1; s[arrtop][arrleft]=' '; } else{ return 0; } return 1; } int B(){ //下 if(arrtop<maxn-2){ s[arrtop][arrleft]=s[arrtop+1][arrleft]; arrtop+=1; s[arrtop][arrleft]=' '; } else{ return 0; } return 1; } int L(){ //左 if(arrleft>0){ s[arrtop][arrleft]=s[arrtop][arrleft-1]; arrleft-=1; s[arrtop][arrleft]=' '; }else{ return 0; } return 1; } int R(){ //右 if(arrleft<maxn-2){ s[arrtop][arrleft]=s[arrtop][arrleft+1]; arrleft+=1; s[arrtop][arrleft]=' '; }else{ return 0; } return 1; } int main(){ cin>>input; int k=0; int tag=1; while(input[k]!='0'){ switch(input[k]){ case 'A':tag=A();break; case 'B':tag=B();break; case 'L':tag=L();break; case 'R':tag=R();break; default: cout<<"This puzzle has no final configuration."<<endl;break; } if(!tag) break; k++; } if(tag){ for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ cout<<s[i][j]<<"\t"; } cout<<endl; } } else{ cout<<"This puzzle has no final configuration."<<endl; } return 0; }
相關推薦
演算法入門 習題3-5 謎題
#include <stdio.h> #include<iostream> #include<cmath> #include <string.h> u
演算法競賽入門經典(第二版) 習題3-5 謎題(Puzzle) UVa227 Finals1993
Page 57 Description 一個5*5的網格中恰好有一個格子是空的,其他格子各有一個字母,四條指令A,B,L,R分別表示將空格上、下、左、右移動。輸入初始網格(以Z結束)和一串指令(以0結束),輸出執行操作後的網格。越界則輸出“This puzzle has n
演算法競賽入門經典(第2版)習題3-5 謎題(Puzzle) Uva227
C++編寫 #include<iostream> using namespace std; int main() { int x = 2, y = 1; char Pu
演算法入門 習題3-3 數數字
#include <stdio.h> #include<iostream> #include <string.h> using namespace std; #def
3-5 謎題 UVa227
#include <vector> #include <iostream> #include <string> using namespace std; int main() { vector<vector<char>
演算法競賽入門經典習題3-5
題目描述:輸入一個n*n字元矩陣,把它左轉90°後輸出。 這個題目就是一個簡單地下標的轉換 程式碼如下: #include <iostream> #include <cstring> #include <cctype>
習題3-5 謎題(Puzzle, ACM/ICPC World Finals 1993, UVa227)
30年前流行的兒童拼圖由一個5×5的框架組成,其中包含24個相同大小的小方塊。每個小廣場上都印有一個獨特的字母。由於框架內只有24個正方形,因此框架還包含一個與小正方形大小相同的空位置。如果正方形位於空位置的右側,左側,上方或下方,則可以將方形移動到該空位置。拼圖的目的是將方
UVa 227 Puzzle(習題3-5)
這題用了不少的時間,反正就是模擬吧,最主要的地方就是字串獲取以及一些細節的地方,有的地方一不注意就會出問題 #include<cstdio> #include<cstring> #include<iostream> using namespace st
第3章 SQL 習題 - 3.5
假設有關係marks(ID,score),我們希望基於如下標準為學生評定等級:如果score < 40 得F;如果40<=score<60得C;如果60<=score<80得B;如果80<=score得A。寫出SQL查詢完成下列操作: 為了學生操作,首先建立關
西瓜數 課後習題3.5 線性判別分析
import csv import numpy as np import matplotlib.pyplot as plt def readData(filename): """ 讀取資料 :param filename: csv格式資料集 :return: X:
習題3-5 三角形判斷
給定平面上任意三個點的座標(x1,y1)、(x2,y2)、(x3,y3),檢驗它們能否構成三角形。 輸入格式: 輸入在一行中順序給出六個[−100,100]範圍內的數字,即三個點的座標x1、y1、x2、y2、x
Python演算法入門——第3章 3.2 快速排序
所謂快速排序,顧名思義,就是一種速度較快的排序方法,是一種常用的排序演算法。快速排序基於 D&C 策略(分而治之)即不斷把問題細分、化整為零從而把難以處理的大問題變成小問題來處理。一個非常經典的案例就是秦國一統六國,採用遠交近攻分而治之的策略。當你不能把眼前的問題解決
演算法競賽入門經典(第二版)第三章陣列和字串習題3-4週期串
如果一個字串可以由某個長度為k的字串重複多次得到,則稱該串以k為週期。例如abcabcabc以3為週期(注意,它也以6和12為週期)。輸入一個長度不超過80的字串,輸出其最小週期 #include<stdio.h> int main() { char a[100];
演算法競賽入門經典(第二版)第三章陣列和字串習題3-3數數字
把前n(n<=10000)個整數順次解除安裝一起:123456789101112…數一數0~9各出現多少次(輸出10個整數,分別是0,1,…,9出現的次數) #include<stdio.h> #define N 100000 char s[N],temp[10]; i
演算法競賽入門經典(第二版)第三章陣列和字串習題3-2分子量
給出一種物質的分子式不帶括號,求分子量。本題中的分子式只包含4種原子分別為CHON,原子量分別為12.01,1.008,16.00,14.01(單位g/mol)。例如,C6H5OH的分子量是94.108g/mol #include <stdio.h> int main() {
演算法競賽入門經典(第二版)第三章陣列和字串習題3-1得分
給出一個由O和X組成的串(長度1-80)統計得分。每個O的得分為目前連續出現的O的個數,X的得分為0。 #include <stdio.h> int main() { int b=0,c=0; int j=1; char a[80]; scan
演算法競賽入門經典(第二版)第三章陣列和字串中競賽題目例題3-5 生成元
如果x加上x的各個數字之和得到y,就說x是y的生成元。給出n(1<=n<=100000)求最小生成元。無解輸出0.例如n=216時的解為198 分析 本題看起來是個數學題實則不然。假設所求生成元為m不難發現m<n.換句話說只需列舉所有的m<n看看有沒有哪個數是n的
關於《演算法競賽入門》(第二版)例題3-5 生成元
include include define maxn 100005 int ans[maxn]; int main() { int T,n; int m; memset(ans,0,sizeof(ans));/將陣列全部初始化為0/
演算法競賽入門經典 習題2-5 分數化小數(decimal)
分數化小數(decimal) 輸入正整數a,b,c,輸出a/b的小數形式,精確到小數點後c位。a,b≤106,c≤
演算法競賽入門學習 習題3-3
#include<stdio.h> #include<string.h> #include<ctype.h> #include <stdlib.h> #define maxn 10 int count[maxn];