给一个字符串,看字符串中是否所有回文串为奇数,输出Odd,否则not odd。字符串很短,三重循环判断。
#include <iostream>
#include<cstring>
using namespace std;
char s[110];
int main()
{
cin>>s;
int len=strlen(s);
int flag=0;
for(int i=0; i<len; i++)
{
for(int j=len-1; j>=i; j--)
{
int l=j+1-i;
int f=0;
for(int k=0; k<=l/2; k++)
{
if(s[i+k]!=s[j-k])
{
f=1;
break;
}
}
if(f==0 && l%2==0)
{
flag=1;
break;
}
}
if(flag==1)
break;
}
if(flag==0)
cout<<"Odd."<<endl;
else
cout<<"Or not."<<endl;
return 0;
}
给n*n的地图,一个字符每行每列只能出现一次,否则 no ;再看是否第一行、第一列均为递增,是则 Reduced; 否则 not Reduced。
#include<iostream>
#include<cstring>
#include<map>
using namespace std;
map<char,int>mp;
char s[40][40];
int vis[40];
int main()
{
mp.clear();
char c='0';
for(int i=0; i<=9; i++)
{
mp[c]=i;
c++;
}
c='A';
for(int i=10; i<=36; i++)
{
mp[c]=i;
c++;
}
int N;
while(cin>>N && N)
{
for(int i=0; i<N; i++)
{
cin>>s[i];
}
int no=0;
for(int i=0; i<N; i++)
{
if(no==1)
break;
memset(vis, 0, sizeof(vis));
for(int j=0; j<N; j++)
{
int x=mp[s[i][j]];
if(vis[x]==1)
{
no=1;
}
vis[x]=1;
}
}
for(int i=0; i<N; i++)
{
if(no==1)
break;
memset(vis, 0, sizeof(vis));
for(int j=0; j<N; j++)
{
int x=mp[s[j][i]];
if(vis[x]==1)
{
no=1;
}
vis[x]=1;
}
}
if(no==1)
{
cout<<"No"<<endl;
continue;
}
int flag=0;
for(int j=0; j<N; j++)
{
if(mp[s[0][j]]!=j)
{
flag=1;
break;
}
}
for(int i=0; i<N; i++)
{
if(mp[s[i][0]]!=i)
{
flag=1;
break;
}
}
if(flag==1)
{
cout<<"Not Reduced"<<endl;
continue;
}
cout<<"Reduced"<<endl;
}
return 0;
}
给N,让1开始,让1与2、3、4、、、组合,输出1;2与3、4、5、、、组合,输出2;。。。。求一半时输出几?
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{
LL N, sum;
cin>>N;
sum=(N-1)*N/2;
sum=(sum+1)/2;
int i=1, j=1;
LL temp=0;
for(i=N-1,j=1; j<N; j++,i--)
{
temp+=i;
if(temp>=sum) //大于一半时
{
cout<<j<<endl;
break;
}
}
return 0;
}