算法复习材料_算法复习总结

其他范文 时间:2020-02-28 22:30:57 收藏本文下载本文
【www.daodoc.com - 其他范文】

算法复习材料由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“算法复习总结”。

1.假票统计

问题描述:

由于你们团队在国际大学生诗歌大赛上取得的巨大成就,你们学校决定为你们召开一次庆功鸡尾酒会,到来的人数大大超出了预期。然而庆功会的主管却抱怨发现了有人使用假票,实际的门票是从1到N(N

输入文件中包含多组测试数据,每组测试数据占两行。第1行包括两个整数N和M,分别表示门票的初始总张数和参加晚会的总人数(1

对每组输入测试数据,输出一个整数,占一行,表示收上来的门票中共有多少张票被伪造过。输入样例: 5 5 3 3 1 2 4 6 10 6 1 3 6 6 4 2 3 1 2 0 0 输出样例: 1 4

参考代码:

//计算有几个号码被复制过 #include #include #define N 10010 #define M 20010 intcnt[N];//cnt[i],i出现的次数 int main(){ int n, m,t;while(scanf(“%d%d”, &n, &m), n + m){ memset(cnt, 0, sizeof(cnt));int i, j, res = 0;for(i = 0;i 1){ res ++;} } printf(“%dn”, res);} return 0;}

2.看和说

问题描述:

看和说的顺序定义如下:任何一个字符串都是以数字开头,每个随后的元素都是被前一个元素重新定义。例如,字符串“122344111”可以被描述为“1个1,两个2,1个3,2个4和3个1”。因此,122344111以序列的形式表示出来就是1122132431。同理,101就表示1111111111。输入:

输入包括测试数据的组数,然后依次为相应的测试数据,每个数据占一行,不会超过1000位。输出: 对于每个测试数据,输出对应的字符串。

输入样例: 3 122344111 1111111111 12345 输出样例: 1122132431 101 1112131415 参考代码:

#include #include int main(){ char s[1001];intn,i,num,len;scanf(“%dn”,&n);while(n--){

num=1;

gets(s);

len=strlen(s);

for(i=0;i

{

if(s[i]!=s[i+1])

{

printf(“%d%c”,num,s[i]);

num=1;

}

else

num++;

}

printf(“n”);} return 0;}

3.二进制转化为十六进制

问题描述:

输入一个2进制的数,要求输出该2进制数的16进制表示。在16进制的表示中,A-F表示10-15 输入:

第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个以0和1组成的字符串,字符串长度至少是1,至多是10000。输出:

n行,每行输出对应一个输入。输入样例:100000 111 输出样例:7

参考代码1:

#include #include int main(){

inti,n,dec,len;

char bin[10001];

scanf(“%d”,&n);

while(n--)

{

scanf(“%s”,bin);

len=strlen(bin);//求二进制数的长度

dec=4-len%4;

if(len%4)//处理头几位,后移dec位,使得变成4的整数倍,前面补0

{

for(i=len;i>=0;i--)

bin[i+dec]=bin[i];

for(i=0;i

bin[i]='0';

len+=dec;

}

for(i=0;i

printf(“%X”,(bin[i+3]-'0')+(bin[i+2]-'0')*2+(bin[i+1]-'0')*4+(bin[i]-'0')*8);

printf(“n”);

}

return 0;}

//参考代码2:

#include #include #define maxn 10006

int main(){ int i, j, t, tp, p;charstr[maxn], str_rev[maxn];char res[maxn/4], tmp[6], tmp_rev[6];while(scanf(“%d”, &t)!=EOF){ while(t--){ p = 0;scanf(“%s”, &str);intlen = strlen(str);for(i = lenii;strncpy(tmp, str_rev + i, k);for(j = kj-1] = tmp[j];canf(tmp_rev, “%d”, &tp);//printf(“k = %d tp = %d tmp = %s tmp_rev = %sn”, k, tp, tmp, tmp_rev);switch(tp){ case 0: res[p++] = '0';break;case 1: res[p++] = '1';break;case 10: res[p++] = '2';break;case 11: res[p++] = '3';break;case 100: res[p++] = '4';break;case 101: res[p++] = '5';break;case 110: res[p++] = '6';break;case 111: res[p++] = '7';break;case 1000: res[p++] = '8';break;case 1001: res[p++] = '9';break;case 1010: res[p++] = 'A';break;case 1011: res[p++] = 'B';break;case 1100: res[p++] = 'C';break;case 1101: res[p++] = 'D';break;case 1110: res[p++] = 'E';break;case 1111: res[p++] = 'F';break;default: break;} i += 4;

} for(i = p-1;i >= 0;i--)printf(“%c”, res[i]);printf(“n”);} } return 0;}

下载算法复习材料word格式文档
下载算法复习材料.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文