- 博客(17)
- 收藏
- 关注
原创 约瑟夫问题 P1996
n个人围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从11开始报数,数到mm的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。#include<bits/stdc++.h>using namespace std;int main(){ int n,m; queue<int> q; cin>>n>>m; for(int i=1;i<=n;i++) q.push(i); int cnt=1...
2021-11-20 22:58:28 714
原创 例题5-6 团体队列 Uva540
有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么这个 新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会排到长队的队尾。 输入每个团队中所有队员的编号,要求支持如下3种指令(前两种指令可以穿插进行)。ENQUEUE x:编号为x的人进入长队。DEQUEUE:长队的队首出队。STOP:停止模拟。对于每个DEQUEUE指令,输出出队的人的编号。#include<bits/stdc++.h>using namespace std;int
2021-11-12 21:11:30 609
原创 例题5-3 安迪的第一个字典 UVa10815
输入一段文字,将其中的所有单词按照字典序输出,要求单词均以小写形式输出,不出现重复单词。#include<bits/stdc++.h>using namespace std;int main(){ string s,buf; set<string> d; while(cin>>s){ for(int i=0;i<s.length();i++) if(isalpha(s[i])) s[i]=tolower(s[i]); ...
2021-11-12 18:08:17 1099
原创 例题5-2 The Blocks Problem,Uva 101
题意:从左到右有n个木块,编号为0~n-1,要求模拟以下4种操作(下面的a和b都是木块编 号)。move a onto b:把a和b上方的木块全部归位,然后把a摞在b上面。move a over b:把a上方的木块全部归位,然后把a放在b所在木块堆的顶部。pile a onto b:把b上方的木块全部归位,然后把a及上面的木块整体摞在b上面。pile a over b:把a及上面的木块整体摞在b所在木块堆的顶部。遇到quit时终止一组数据。a和b在同一堆的指令是非法指令,应当忽略。(
2021-11-12 00:27:44 406
原创 例题5-1 大理石在哪儿(Where is the Marble?,Uva 10474)
#include<bits/stdc++.h>using namespace std;int main(){ int n,q,a[10005],g,cnt=0; while(1){ scanf("%d%d",&n,&q); if(n==0&&q==0) break; printf("CASE# %d:\n",++cnt); for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n);.
2021-11-12 00:10:12 482
原创 十进制转十六进制
#include<stdio.h>#include<string.h>char s[100000];int main(){ long a; scanf("%d",&a); if(a==0){ printf("0\n"); return 0; } for(int i=0;a!=0;i++){ if(a%16==10) s[i]='A'; else if(a%16==11) s[i]='B'; else if(a%16==12) s[i]=.
2021-11-07 00:01:40 94
原创 十六进制转十进制
#include<stdio.h>#include<string.h>#include<ctype.h>#include<cmath>int main(){ long long a=0; char s[10]; scanf("%s",s); for(int i=0;i<strlen(s);i++){ if(isalpha(s[i])) s[i]=s[i]-'A'+'0'+10; a+=(int(s[i]-'0')*pow(16,.
2021-11-07 00:00:34 88
原创 C语言-判断素数
int is_prime(int n){ if(n <= 1) return 0; int m = floor(sqrt(n) + 0.5); for(int i = 2; i <= m; i++) if(n % i == 0) return 0; return 1;}使用 floor(sqrt(n) + 0.5) 避免了浮点运算误差。
2021-11-06 23:08:17 162
原创 习题3-7 DNA序列
第一遍看错题了,白白浪费时间,注意题目要求找到一个序列,使其到所有已知序列的总距离尽量小,序列是要自己生成的,而不是在输入序列中寻找一个到其他输入序列最小的!!#include<stdio.h>#include<string.h>char s[55][1005],ss[]={'A','C','G','T'};int num[1005][4],min[1005][2]; //第一列存储最小的字符下标,第二列存储其值 int main(){ int m,n,T; s.
2021-11-06 13:32:16 153
原创 习题3-5 谜题(Puzzle) UVa227 (程序有bug)
#include<stdio.h>#include<string.h>#define MSG "This puzzle has no final configuration.\n"int main(){ char a[6][6],c; int x=0,y=0,id=0,flag=0,flag2=0,start=0; while(1){ int ok=1; id++; memset(a,0,sizeof(a)); //获取字符矩阵 for(in.
2021-11-06 00:15:13 78
原创 习题3-4 周期串
如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例 如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。 输入一个长度不超过80的字符串,输出其最小周期。#include<stdio.h>#include<string.h>char s[100];int main(){ int T,k; scanf("%d",&T); while(T--){ scanf("%s",s); int len=strlen(s)
2021-11-04 22:35:42 169
原创 例题3-6 环状序列
长度为n的环状串有n种表示法,分别为从某 个位置开始顺时针得到。在这些表示法中,字典序最小的称 为"最小表示"。 输入一个长度为n(n≤100)的环状DNA串(只包含A、C、G、T这4种字符)的一种表 示法,你的任务是输出该环状串的最小表示。例如,CTCC的最小表示是 CCCT,CGAGTCAGCT的最小表示为AGCTCGAGTC。#include<stdio.h>#include<string.h>int less(char* s,int n,int m){ for.
2021-11-04 22:29:49 237
原创 算法笔记-数组
1.比较大的数组应尽量声明在main函数之外,否则程序可能无法运行。2.数组的赋值操作:memcpy() 定义在string.h 中memcpy(b, a, sizeof(int) *k); //从数组a复制k个元素到数组b(整形数组)memcpy(b, a, sizeof(a)); //把数组a复制到数组b3.把数组置零:memset()定义在string.h 中memset(a, 0, sizeof(a))...
2021-11-04 18:50:31 102
原创 蛇形填数-
蛇形填数。在n×n方阵里填入1,2,…,n×n,要求填成蛇形。例如,n=4时方阵为:10 11 12 19 16 13 28 15 14 37 65 4上面的方阵中,多余的空格只是为了便于观察规律,不必严格输出。n≤8。#include<stdio.h>#include<string.h>int main(){ int a[8][8]; int n,num,x,y; memset(a, 0, sizeof(a)); scanf("%d"...
2021-11-03 20:29:24 90
原创 开灯问题-
有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯 将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输 入n和k,输出开着的灯的编号。k≤n≤1000。#include<stdio.h>#include<string.h>int a[1005];int main(){ int n,k; scanf("%d %d",&...
2021-11-03 20:27:25 118
原创 关于浮点数的相等比较
下列程序:#include<stdio.h>int main(){double i;for(i = 0; i != 10; i += 0.1)printf("%.1f\n", i);return 0;}结果会陷入死循环。问题出在语句"i != 10"这里。由于浮点数存储存在误差,两个浮点数不能直接比较是否相等,可采用绝对误差:将该语句改为 fabs(i-10)>1e-6 即可。...
2021-11-03 13:25:48 240
原创 习题2-6 排列(permutation)
用1,2,3,…,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解,每行一个解。提示:不必太动脑筋。#include<stdio.h>int main(){ int i1,i2,i3,j1,j2,j3,k1,k2,k3,count; for(int i=100;i<=333;i++){ count=0; int j=i*2; int k=i*3;...
2021-11-03 13:18:30 261
基于TOD模式的城市综合客运枢纽设计研究
2024-10-13
基于成都市路网的多车辆医疗物资配送优化方案
2024-09-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人