1. 程式人生 > >演算法入門 習題3-5 謎題

演算法入門 習題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 三角形判斷

給定平面上任意三個點的座標(x​1​​,y​1​​)、(x​2​​,y​2​​)、(x​3​​,y​3​​),檢驗它們能否構成三角形。 輸入格式: 輸入在一行中順序給出六個[−100,100]範圍內的數字,即三個點的座標x​1​​、y​1​​、x​2​​、y​2​​、x​

Python演算法入門——第33.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];