
数小于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
}


评论列表(0条)