从方格里的某一个字的来历开始,一次经过格子里...

小学语文知识竞赛趣味题_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
小学语文知识竞赛趣味题|
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
小学六年级语文趣味知识竞赛试题
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口2396人阅读
网格中移动字母
2x3=6个方格中放入ABCDE五个字母,右下角的那个格空着。如图【1.jpg】所示。
和空格子相邻的格子中的字母可以移动到空格中,比如,图中的C和E就可以移动,移动后的局面分别是:
为了表示方便,我们把6个格子中字母配置用一个串表示出来,比如上边的两种局面分别表示为:
题目的要求是:请编写程序,由用户输入若干表示局面的串,程序通过计算,
输出是否能通过对初始状态经过若干次移动到达该状态。可以实现输出1,否则输出0。初始状态为:ABCDE*
用户输入的格式是:先是一个整数n,表示接下来有n行状态。程序输出也应该是n行1或0
例如,用户输入:
则程序应该输出:
请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
import java.util.S
import java.util.ArrayL
import java.util.Q
import java.util.LinkedL
public class 网格中移动字母 {
// 交换元素
public static String swap(String s,int k,int j){
char[] c = s.toCharArray();
char t = c[k];
c[k] = c[j];
return new String(c);
public static int f(String s){
ArrayList&String& lis = new ArrayList&String&(); // 记录全部交换结果(检查重复用)
Queue&String& queue = new LinkedList&String&();
// 队列(用来测试所有可能)
int[] d = {-1,-3,1,3}; // 定义方向(左,上,右,下)
queue.offer(s); // 入队
lis.add(s);
// 加入记录
while(queue.size()&0){
String firstStr = queue.poll(); // 出队
if(firstStr.equals(&ABCDE*&)) return 1; // 找到结果,退出
int k = firstStr.indexOf(&*&); // 找到 &*&号的位置
for(int i=0;i&4;i++){ // 左,上,右,下 四个方向都探测
int j = k+d[i];
if(j&=0&&j&=5){ // 当前方向不越界
String t = swap(firstStr,k,j); // 交换元素
if(!lis.contains(t)){ // lis 不包含 t
queue.offer(t); // 入队
lis.add(t);
// 添加记录
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println(&输入整数n&);
int n = scan.nextInt();
scan.nextLine();
String[] s = new String[n];
for(int i=0;i&n;i++){
s[i] = scan.nextLine(); // 初始数据
for(int i=0;i&n;i++){
System.out.println(f(s[i])); // 得到结果
}运行结果:输入整数n
下边程序输出移动过程:
import java.util.ArrayL
import java.util.S
class moveStr {
moveStr(String str, String bz) {
this.str =
public String getStr() {
public void setStr(String str) {
this.str =
public String getBz() {
public void setBz(String bz) {
public class CopyOfGrid {
String destStr = &ABCDE*&;// 目标字符串
ArrayList&String& lis = new ArrayList&String&(); // 记录结果
static boolean result =
// 移动字母
public String sawp(String str, int j) {
if (j & 0 || j &= str.length())
return &&;
int i = str.indexOf(&*&);
// 交换位置
char[] c = str.toCharArray();
char temp = c[i];
c[i] = c[j];
return new String(c);
// 检查并修改记录
public void check(ArrayList&moveStr& list, String temp, moveStr tempMs) {
if (!temp.equals(&&) && !lis.contains(temp)) {
String tempBz = tempMs.bz + &-&\n& +
moveStr ms1 = new moveStr(temp, tempBz);
list.add(ms1);
lis.add(temp);
public void find(String str, String bz) {
ArrayList&moveStr& msLis = new ArrayList&moveStr&();
moveStr ms = new moveStr(str, bz);
msLis.add(ms);// 对象入队
lis.add(str); // 把字符串加入lis
while (msLis.size() & 0) {
moveStr tempMs = msLis.remove(0); // 出队
if (tempMs.str.equals(destStr)) {
System.out.println(str + &: 有解 \n& + tempMs.bz);
int k = tempMs.str.indexOf(&*&); // 找到*号出现的位置
// 向(右)移动
check(msLis, sawp(tempMs.str, k + 1), tempMs);
// 向(上)移动
check(msLis, sawp(tempMs.str, k - 3), tempMs);
// 向(左)移动
check(msLis, sawp(tempMs.str, k - 1), tempMs);
// 向(下)移动
check(msLis, sawp(tempMs.str, k + 3), tempMs);
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print(&请输入目标状态字符串:&);
String user = scan.nextLine();
new CopyOfGrid().find(user, user);
if (!result)
System.out.println(&无解&);
}运行结果:请输入目标状态字符串:AB*DEC
AB*DEC: 有解
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:291638次
积分:6009
积分:6009
排名:第1289名
原创:289篇
转载:56篇
评论:148条
(5)(10)(10)(3)(29)(7)(6)(5)(1)(3)(2)(13)(11)(1)(13)(16)(84)(19)(16)(4)(1)(20)(75)(2008o崇明县二模)如图甲所示,是一位同学在实验室中照的一小球做平抛运动的频闪照片的一部分,由于照相时的疏忽,没有摆上背景方格板,图中方格是后来用直尺画在相片上的(图中格子的竖直线是实验中重垂线的方向,每小格的边长均为5mm&),为了补救这一过失,他对小球的直径进行了测量,如图乙所示,如果取重力加速度&g=10m/s&2,则(1)照片闪光的频率为Hz;(2)小球作平抛运动的初速度为m/s.★★★★☆推荐试卷
解析质量好解析质量中解析质量差

我要回帖

更多关于 一个字的来历 的文章

 

随机推荐