'符号,应改为255数组 错误2: 题目所说的字符串可能包含空格,但是用std::cin输入字符串,空格后的字符串将丢失,应改为std::cin.g" /> '符号,应改为255数组 错误2: 题目所说的字符串可能包含空格,但是用std::cin输入字符串,空格后的字符串将丢失,应改为std::cin.g"> acm题,要求编写一字符串颠倒的程序,把字符串中的字符颠倒位置。_软件运维_内存溢出

阅读9

acm题,要求编写一字符串颠倒的程序,把字符串中的字符颠倒位置。,第1张

错误1: 题目要求输入字符

数小于255,而数组只开了254,忽略了'\0'符号,应改为255数组 错误2: 题目所说的字符串

可能包含空格,但是用std::cin输入字符串,空格后的字符串将丢失,应改为std::cin.get()函数或std::cin.getline()函数输入;

错误3:题目要求输入字符串,没有说只包括字母,也许还有其他字符,如标点符号等等。

综上所述,修改代码:

#include <iostream>

#include <cstring>

int main()

{

    char str[255] = {0}

    char t = 0

    std::cin.getline(str, 255)

    

    for(int i = 0, j = strlen(str) - 1 i < j ++i, --j)

    {

        t = str[i]

        str[i] = str[j]

        str[j] = t

    }

    

    std::cout << str << '\n'

    return 0

}

我就晕死了,没考虑到这种情况。

2

1 2 1 2

不是棵树。

害我挂了4次~~

我主要思想是: 根据输入建立一个关系链接矩阵。 然后找到无入度的点作为根点,开始深搜遍历

,遍历过程中记录遍历过的点,当遍历过程中,如又碰到已经遍历的点,那么说明它肯定不是棵数。。。,因为此时已经存在了不止一条路径从根节点到该节点。

如果上判断通过,就判断是否所有的点被访问到了。。 如果 有,说明他可能是一个森林,至少不是树了。。。

我的 代码如下:

#include <stdio.h>

#include <memory>

#define MAX 50

bool relation[MAX][MAX]

int node_num

bool pass[MAX]

int flage

int index(int num)

{

static int index[MAX]

int i

for( i =0 i <node_num i ++ )

if(num == index[i]) return i

index[i] = num

node_num++

return i

}

int find_root()

{

int i , j

for( j =0 j <node_num j ++ )

{

for( i = 0 i <node_num i ++ )

if( relation[i][j] != 0 ) break

if(i >= node_num ) return j

}

return -1

}

void dfs( int node )

{

int i

for(i = 0 i <node_num i ++ )

if( flage == 0 &&relation[node][i] == true )

{

if(pass[i] == true) { flage = 1 return }

pass[i] = true

relation[node][i] = 0

dfs( i )

}

}

bool check_tree()

{

int root , i

if( ( root = find_root() ) <0 ) return false

pass[root] = true

dfs(root)

if(flage == 1 ) return false

for(i =0 i <node_num i ++ )

if(pass[i] == false) return false

return true

}

int main()

{

int cases, i , j , n , begin ,end

scanf("%d",&cases)

for(j = 0 j <cases j ++ )

{

memset(relation , false , sizeof(relation))

memset(pass,false,sizeof(pass))

node_num = 0

flage = 0

scanf("%d",&n)

for(i = 0 i <n i ++ )

{

scanf("%d %d",&begin,&end)

begin = index(begin)

end = index(end)

if(relation[begin][end] == true )

flage = 1

else relation[begin][end] = true

}

if(check_tree() == true) printf("Case %d is a tree.",j+1)

else printf("Case %d is not a tree.",j+1)

printf("\n")

}

return 0

}

主要是num1,num2的大小不确定,一开始的先定好起点和终点#include<stdio.h>int main()

{

int k

int n,m

int i,j,num

int p,sum

scanf("%d",&k)

while(k--)

{

scanf("%d%d",&n,&m)

num=0

if(n>m) {i=nn=mm=i}

for(i=ni<mi++)

{

sum=1

for(p=2p<ip++)

{

if(i%p==0) sum+=p

}

if(sum==i) num++

}

printf("%d\n",num)

}

return 0


}

欢迎分享,转载请注明来源:

内存溢出

原文地址:

https://54852.com/yw/11137543.html
错误
(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
奥迪w12奥迪w12一级用户组
小程序收集各公司数据的方法
上一篇
2023-05-13
java代码ansi_x3.4-1968改为utf
2023-05-13

发表评论
请登录后评论...
登录
提交

    评论列表(0条)
保存
{label}{label}