【CVTE20160807】和一个全排列相关的例子

  #include<bits/stdc++.h>
using namespace std;
  char  fun(char s[])
{
    char ret=‘\0‘;
   if(s==NULL) return  ret;
   char* p=s;   char* q=s;
   while(*p!=‘\0‘)
     {
       while(*q!=‘\0‘)
          {
           ++q;
          if(*q==*p)break;
          }
       if(*q!=‘\0‘)
           {
           ret=*p;
            break;
           }
       ++p;
     }
     return ret;
}

char Find(char *str)
{
   if(str == NULL || *str == ‘\0‘)
       return ‘\0‘;
   int *p = new int[256];
   for(int i=0;i < 256;++i)
      p[i] = 0;
    
   while(*str != ‘\0‘)
   {
      p[*str]++;
      if(p[*str] == 2)
        return *str;
      ++str;
    }
    return ‘\0‘;  
}
int main()
{  
      char s[]="google";
       cout<<fun(s)<<endl;
      cout<<Find(s)<<endl;
	cout << "Hello,C++ world of AnycodeX!" << endl;
	return 0;
}
 

   #include<bits/stdc++.h>
using namespace std;
int funadd(int n)
{

int tmp=n;
if(n<0) tmp*=-1;
int ret=tmp%10; 
while(tmp>10)
{
ret+=(tmp/10)%10; 
tmp/=10; 
} 
int r=ret%10;
int f=ret/10;
  ret=f+r;
if(n<0)ret*=-1;  
return ret;
}
 vector<int> cs(  vector<int>&unsort)
{
	int n=unsort.size();
	if(n<2) return unsort;
 
     int a[n];
     int b[n];
    vector<int>::const_iterator it=unsort.begin();
    for(int i=0;it<unsort.end();++it,++i)
    {
       a[i]=funadd(*it); 
       b[i]=*it;
    }
  
//    unsort.erase(unsort.begin(),unsort.end());  cant
    for(int i=0;i<n;i++)
      {
           for(int j=i;j<n;j++)
           if(a[j]<a[i])
	   {
		swap(a[i],a[j]);
		swap(b[i],b[j]);
	   } else if(a[j] == a[i])
	   {
		if(b[j] < b[i])
		{
		    swap(a[i],a[j]);
		    swap(b[i],b[j]);
		}
	   }
      }
    
     for(int i=0;i<n;++i)
    {
        cout<<a[i]<<" ";
         
    }
   cout<<endl;
for(int i=0;i<n;++i)
    { 
        cout<<b[i]<<" ";
    }
   cout<<endl;

   vector<int> p;
   for(int i=0;i < n;++i)
   {
	p.push_back(b[i]);
   }
cout<<&p<<endl;
   return p;
}
int main()
{  
     vector<int>qq; 
      qq.push_back(17);
      qq.push_back(71);
      qq.push_back(44);
     vector<int> s = cs(qq);
cout<<&s<<endl;
   vector<int>::iterator it;
     for(it = s.begin();it != s.end();++it)
    cout<<*it<<" ";
   cout<<endl;

               //  qq.erase(qq.begin(),qq.end());
	cout << "Hello,C++ world of AnycodeX!" << endl;
	return 0;
}
 注意上面的很多细节
 10*10地板的房间 避开(5,5)地板,从(1,1)走到(10,10)有多少种最快的走法;
 仅仅可以上下左右走一格;
 答案:
 【10!-5!*6!】
 以前想过,现在再回忆。
时间: 2024-10-15 22:50:23

【CVTE20160807】和一个全排列相关的例子的相关文章

N囚徒挑战——一个图论相关的概率问题

N囚徒挑战--一个图论相关的概率问题 一个房间内有 \(n\) 个盒子,从 \(1\) 到 \(n\) 编号.同时有 \(n\) 个从 \(1\) 到 \(n\) 的号码牌随机打乱放入盒子中,每个盒子有且仅有一个号码牌. 现有 \(n\) 个囚徒,从 \(1\) 到 \(n\) 编号.要求所有囚徒完成一项挑战,如果所有囚徒挑战成功,那么他们就会被释放.挑战内容是:每个囚徒依次进入房间,打开并查看任意数量不超过 \(\lfloor\frac{n}{2}\rfloor\) (向下取整)个的盒子内的号

使用Multiplayer Networking做一个简单的多人游戏例子-2/3(Unity3D开发之二十六)

猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51007512 使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Networking做一个简单的多人游戏例子-3/3 7. 在网络中控制Player移动 上一篇中,玩家操

一个简单的KVO例子

一个简单的KVO例子. 两个界面,第一个界面显示名字和配偶(spouse)名字,第二个界面显示修改名字和配偶名字,返回时,将看到第一个界面的名字显示发生改变. 首先定义一个person类作为model. #import <Foundation/Foundation.h> @interface Person : NSObject @property (strong, nonatomic) NSString *name; @property (strong, nonatomic) NSString

Java一个简单的死锁例子

内容:一个简单的死锁例子,大概的思路:两个线程A和B,两把锁X和Y,现在A先拿到锁X,然后sleep()一段时间,我们知道sleep()是不会释放锁资源的.然后如果这段时间线程B拿到锁Y,也sleep()一段时间的话,那么等到两个线程都醒过来的话,那么将互相等待对方释放锁资源而僵持下去,陷入死锁.flag的作用就是让A和B获得不同的锁. public class TestDeadLock { public void run() { MyThread mt = new MyThread(); ne

编写一个简单的jdbc例子程序

1 package it.cast.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 public class Base { 10 11 public static void main(String[] args) th

NextPermutation,寻找下一个全排列

问题描述:给定一个数组是一个全排列,寻找下一个全排列.例如123->132, 321->123, 115->151. 算法分析:从后往前寻找顺序,找到后从往前寻找第一个大于当前元素,即第一个逆序,然后元素交换,重新sort当前元素后面的元素.如果都是逆序,reverse数组. 1 package Leecode_Permutation; 2 3 import java.util.Arrays; 4 5 public class NextPermutation { 6 public voi

LeetCode 31 Next Permutation(下一个全排列)

题目链接: https://leetcode.com/problems/next-permutation/?tab=Description Problem :寻找给定int数组的下一个全排列(要求:be in-place) 倒序查找到该数组中第一个满足后面的数字大于前面的数字的下标i (当前下标 i 指向 后面的那个比较大的数) 参考代码: package leetcode_50; /*** * * @author pengfei_zheng * 下一个全排列 */ public class S

一个值得思考的例子

# -*- coding: cp936 -*- #python 27 #xiaodeng #一个值得思考的例子 def intersect(seq1,seq2): res=[] #初始化 for x in seq1: #遍历seq1 if x in seq2: # res.append(x) return res #注意return和res=[]的同等缩进 seq1=[4,5,1,2,3] seq2=[1,2,3] print intersect(seq1,seq2) 上面的例子也有多态的体现,

一个简单的小例子让你明白c#中的委托-终于懂了!

模拟主持人发布一个问题,由多个嘉宾来回答这个问题. 分析:从需求中抽出Host (主持人) 类和Guests (嘉宾) 类. 作为问题的发布者,Host不知道问题如何解答.因此它只能发布这个事件,将事件委托给多个嘉宾去处理.因此在Host 类定义事件,在Guests类中定义事件的响应方法.通过多番委托的"+="将响应方法添加到事件列表中,最终 Host 类将触发这个事件.实现过程如下: 代码其实很少下面贴出来所有代码: QuestionArgs.cs view plaincopy to