XM


1 ascii的值 'A' 65
2 for 循环终止条件 用*p 表示 取完所有
3 指针 直接++,直接加了对应类型的地址长度
4 scanf("%s",bfr); 输入 %d整形 %s 字符串 %c 字符。内容给到后面的数组里
scanf 后面一定要跟地址!!!
scanf 不能输入空格
统计字母 直接用一个数组去统计

 

XM2描述

世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?

int countBitDiff(int m, int n ) {
int i, cnt = 0;

for(i = 0;i<32;i++)
{
if(((n>>i)&1) != ((m>>i)&1))
{
cnt++;
}
}// write code here
return cnt;
}

XM4描述

继MIUI8推出手机分身功能之后,MIUI9计划推出一个电话号码分身的功能:首先将电话号码中的每个数字加上8取个位,然后使用对应的大写字母代替 ("ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"), 然后随机打乱这些字母,所生成的字符串即为电话号码对应的分身。

输入描述:

第一行是一个整数T(1 ≤ T ≤ 100)表示测试样例数;接下来T行,每行给定一个分身后的电话号码的分身(长度在3到10000之间)。

输出描述:

输出T行,分别对应输入中每行字符串对应的分身前的最小电话号码(允许前导0)。

#include "stdio.h"
#include "stdlib.h"
int main() {
char bfr[10001];
int T;
scanf("%d",&T);
int letterCount[26];
while(T--)
{
scanf("%s",bfr);
memset(letterCount,0,26*sizeof(int));
char* p;
for(p=bfr;*p;p++)
{
letterCount[*p-'A']++;
}
int numCount[10];
/*
0 ZERO Z 2->0
1 ONE O 3->1
2 TWO W 4->2
3 THREE R 5->3
4 FOUR U 6->4
5 FIVE F 7->5
6 SIX X 8->6
7 SEVEN S 9->7
8 EIGHT G 0->8
9 NINE I 1->9
ABCDEFG HIJ K L M N O P Q R S T U V W X Y Z
0123456 789 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
*/

numCount[0] = letterCount[25];
numCount[2] = letterCount[22];
numCount[4] = letterCount[20];
numCount[6] = letterCount[23];
numCount[8] = letterCount[6];

numCount[1] = letterCount[14]-numCount[0]-numCount[2]-numCount[4];
numCount[3] = letterCount[17]-numCount[0]-numCount[4] ;
numCount[5] = letterCount[5]-numCount[4];
numCount[7] = letterCount[21]-numCount[5];
numCount[9] = (letterCount[13]-numCount[1]-numCount[7])/2;
while(numCount[8]--) printf("%c",'0');
while(numCount[9]--) printf("%c",'1');
while(numCount[0]--) printf("%c",'2');
while(numCount[1]--) printf("%c",'3');
while(numCount[2]--) printf("%c",'4');
while(numCount[3]--) printf("%c",'5');
while(numCount[4]--) printf("%c",'6');
while(numCount[5]--) printf("%c",'7');
while(numCount[6]--) printf("%c",'8');
while(numCount[7]--) printf("%c",'9');
printf("\n");
}
}

XM5描述

给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”

输入描述:

输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)

输出描述:

对于每个测试示例,要求输出句子中单词反转后形成的句子

int main() {
int t,letterlen = 0,wordlen = 1;
char* p;
char input[1000];
int wordnum[50];
int wordcnt = 0;

gets(input);
wordnum[0]=0;
for(p=input;*p;p++)
{
if(*p == ' ')
{
wordnum[++wordcnt] = letterlen+1;
wordlen++;
}
letterlen++;
}
input[letterlen] = ' ';

for(t= wordlen-1;t>=0;t--)
{
while(input[wordnum[t]]!=' ')
{
printf("%c",input[wordnum[t]++]);
}
printf("%c",' ');
}
}

XM6描述

现在有一棵合法的树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度

输入描述:

输入的第一行表示节点的个数n(2 ≤ n ≤ 1000,节点的编号为0到n-1)组成, 下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号

输出描述:

输出树的高度,为一个整数 最简单的答案,没有更简单了

#include

int main() {
int n,a,b,height = 0;
scanf("%d",&n);
int depth[1000];
depth[0] = 1;
for(int k = 0;k {
scanf("%d%d",&a,&b);
depth[b] = depth[a] + 1;
if(depth[b] > height)
{
height = depth[b];
}
}
printf("%d",height);
}

XM17.描述

找出单向链表中的一个节点,该节点到尾指针的距离为K。链表的倒数第0个结点为链表的尾指针。要求时间复杂度为O(n)。
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
}
链表节点的值初始化为1,2,3,4,5,6,7。

输入描述:

该节点到尾指针的距离K

输出描述:

返回该单向链表的倒数第K个节点,输出节点的值

typedef struct ListNode
{
int m_nKey;
struct ListNode_t* m_pNext;
}ListNode_t;

ListNode_t list[8];
void Listinitfunc(ListNode_t* pxlist,int len)
{
for(int i = 0;i {
pxlist[i].m_nKey = i;
pxlist[i].m_pNext = &pxlist[i+1].m_nKey;
}
pxlist[len-1].m_nKey = len-1;
pxlist[len-1].m_pNext = &pxlist[0].m_nKey;
}
int Listfindfunc(ListNode_t* pxlist,int x,int len)
{
return pxlist[len - x].m_nKey;
}
void main()
{
int x,y;
scanf("%d",&x);
Listinitfunc(list,8);
y = Listfindfunc(list,x,8);
printf("%d",y);

}

XM36描述

输入参数为字符串型的n维数组,数组的每一项值为数组 或 int型数字。请实现一个函数,可以获取列表嵌套列表的最大深度为多少。

输入描述:

输入参数为字符串型的 n维数组,列表的每一项值为数组 或 int型数字。数组内的数组,每一项值,也可以是数组 或 int型数字。

输出描述:

int型数字,表示数组嵌套的深度

int main() {
char* p;
char bfr[65535];
int x = 0,y= 0;
//scanf("%s",bfr);
gets(bfr);
for(p=bfr;(*p)!='\0';p++)
{
if(*p =='[')
{
x++;
if(x>y)
{
y=x;
}
}
else if(*p ==']')
{
x--;
}
}
printf("%d",y);
return 0;
}