uva110-Meta-Loopless Sorts(没有循环的排序程序)

2023-11-20 19:48

本文主要是介绍uva110-Meta-Loopless Sorts(没有循环的排序程序),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于这个题,我也尝试了多种结构,如链表,二叉树,数组;最后我还是按照类似插入排序的方法做出来的。

以a,b,c, d为例,加入已经排好了a<b<c; 则d就要从后往前一次比较,共比较3,但是有4中情况,因为多出了一种else的情况。

if c<d 则把d放在第四个位置。得到abcd的顺序。 

else if b<d 则把d与c交换位置,得到abdc的顺序。

else if a<d 则把d与b的位置交换,得到adbc的顺序。

else 则把d放到a前面,就是与a的位置交换。得到dabc的顺序。

注意:由于递归 结构会改变公用数组的值,以至于得不到正确结果,所以每进入新的递归结构,就把数组拷贝一份。

代码如下:

#include <cstdio>
#include <cstdlib>void outputspace(int spacenumber)
{for(int i = 0;i < spacenumber; i++)printf("  ");
}
void if_else(int n, int cur, int *flag)
{if(n==cur){outputspace(cur);printf("writeln(");for(int i = 0; i < n; i++)i==n-1?printf("%c",'a'+flag[i]):printf("%c,",'a'+flag[i]);printf(")\n");return;}int f[15];for(int i = 0; i < cur; i++)f[i] = flag[i];for(int i = cur;i >= 0; i--){if(i==cur){outputspace(cur);  printf("if %c < %c then\n",'a'+f[i-1],'a'+cur);f[cur] = cur;if_else(n, cur+1, f);}else if(i==0){outputspace(cur);  printf("else\n");int temp = f[0];f[0] = f[1], f[1] = temp;if_else(n,cur+1, f);}else{outputspace(cur);  printf("else if %c < %c then\n",'a'+f[i-1],'a'+cur);int temp = f[i];f[i] = f[i+1], f[i+1] = temp;if_else(n,cur+1, f);}}
}
int main ()
{int t, n;int flag[10];scanf("%d",&t);while(t--){scanf("%d",&n);puts("program sort(input,output);");puts("var");for(int i = 0; i < n; i++){i==n-1?printf("%c",'a'+i):printf("%c,",'a'+i);}puts(" : integer;");puts("begin");printf("  readln(");for(int i = 0; i < n; i++){i==n-1?printf("%c",'a'+i):printf("%c,",'a'+i);}puts(");");flag[0] = 0;if_else(n, 1, flag);puts("end.");if(t)puts("");}return 0;
}



这篇关于uva110-Meta-Loopless Sorts(没有循环的排序程序)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/397006

相关文章

豆包 MarsCode 不允许你还没有女朋友

在这个喧嚣的世界里,爱意需要被温柔地唤醒。为心爱的她制作每日一句小工具,就像是一场永不落幕的浪漫仪式,每天都在她的心田播撒爱的种子,让她的每一天都充满甜蜜与期待。 背景 在这个瞬息万变的时代,我们都在寻找那些能让我们慢下来,感受生活美好的瞬间。为了让这份浪漫持久而深刻,我们决定为女朋友定制一个每日一句小工具。这个工具会在她意想不到的时刻,为她呈现一句充满爱意的话语,让她的每一天都充满惊喜和感动

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

poj3750约瑟夫环,循环队列

Description 有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。 Input 第一行输入小孩的人数N(N<=64) 接下来每行输入一个小孩的名字(人名不超过15个字符) 最后一行输入W,S (W < N),用

校验码:奇偶校验,CRC循环冗余校验,海明校验码

文章目录 奇偶校验码CRC循环冗余校验码海明校验码 奇偶校验码 码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据检验码的码距。 奇偶校验码的编码方法是:由若干位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码。 奇校验:整个校验码中1的个数为奇数 偶校验:整个校验码中1的个数为偶数 奇偶校验,可检测1位(奇数位)的错误,不可纠错。

安装SQL2005后SQL Server Management Studio 没有出来的解决方案

一种情况,在安装 sqlServer2005 时 居然出现两个警告: 1 Com+ 目录要求 2 Edition change check 郁闷!网上说出现两个警告,是肯定装不成功的!我抱着侥幸的态度试了下,成功了。 安装成功后,正准备 “ 仅工具、联机丛书和示例(T)” 但是安装不了,他提示我“工作站组件”安装过了对现有组件无法更新或升级。 解决办法: 1 打开“控

react笔记 8-17 属性绑定 class绑定 引入图片 循环遍历

1、绑定属性 constructor(){super()this.state={name:"张三",title:'我是一个title'}}render() {return (<div><div>aaaaaaa{this.state.name}<div title={this.state.title}>我是一个title</div></div></div>)} 绑定属性直接使用花括号{}   注

Spring是如何解决循环依赖?

现象解释: 在Spring框架中,循环依赖(Circular Dependency)是指两个或多个Bean之间相互依赖,形成了一个循环。例如,Bean A依赖于Bean B,而Bean B又依赖于Bean A。Spring通过多种机制解决循环依赖问题,具体来说,主要有以下几种方式: 1.三级缓存机制 Spring容器在实例化Bean时使用了三级缓存来解决循环依赖,主要涉及三个缓存结构: 一级

src/pyaudio/device_api.c:9:10: fatal error: portaudio.h: 没有那个文件或目录

(venv) shgbitai@shgbitai-C9X299-PGF:~/pythonworkspace/ai-accompany$ pip install pyaudio sounddeviceCollecting pyaudioDownloading PyAudio-0.2.14.tar.gz (47 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

FPGA开发:条件语句 × 循环语句

条件语句 if_else语句 if_else语句,用来判断是否满足所给定的条件,根据判断的结果(真或假)决定执行给出的两种操作之一。 if(表达式)语句; 例如: if(a>b) out1=int1; if(表达式)         语句1; else         语句2; 例如: if(a>b)out1=int1;elseout1=int2; if(表达式1) 语句1; els

html记账本改写:数据重新布局,更好用了,没有localStorage保存版本

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><title>htm记账本</title><style>table {user-select: none;/* width: 100%; */border-collapse: collapse;}table,th,td {border: 1px solid bla